找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1440|回复: 7
打印 上一主题 下一主题
收起左侧

单片机模块化编程为什么要防止头文件重复包含?

[复制链接]
跳转到指定楼层
楼主
ID:973385 发表于 2021-11-9 20:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#ifndef _add_h
#define _add_h   //防止头文件重复包含

..........();

#endif


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:231674 发表于 2021-11-10 08:49 | 只看该作者
不加IDE会报重复定义,跟IDE也有关。我以前用IAR重复包含头文件就不会报错,正常都要加或者 直接加 #pragma once
回复

使用道具 举报

板凳
ID:592807 发表于 2021-11-10 09:41 | 只看该作者
#ifndef..........#endif 才是防止头文件重复的用的,如果#ifndef后面的关键字在其他地方被宏定义过的话#ifndef....#endif之间的内容不会被编译。这是为了防止有多个相同名字的H文件,所以一般#define后面跟着的内容和H文件名字几乎一致
回复

使用道具 举报

地板
ID:514901 发表于 2021-11-10 09:44 | 只看该作者
最好加上哦,既然是模块化编程,就要规范,不然会有许多莫名其妙的错误的
回复

使用道具 举报

5#
ID:277550 发表于 2021-11-10 10:35 | 只看该作者
为什么要防重复,
变量或函数 重复定义,通常编译不通过
回复

使用道具 举报

6#
ID:624769 发表于 2021-11-10 10:47 | 只看该作者
因为,有很多傻子会反复包含头文件,比如A的头里面会包B的头,B的头里面又包A的头。然后编译半天没有编译完,还怪编译器不够智能,所以编译器为了免责,就禁止重复包含头文件了(会报错,不通过)。然后,傻子又怪头文件写的滥,不够智能,所以头文件就要增加防止被重复包含的语句了。其实众口难调,还是会有人觉得防止被重复包含不够人性之类的。
回复

使用道具 举报

7#
ID:979686 发表于 2021-11-10 10:51 | 只看该作者
防止重复定义。加了之后,在不同的地方包含同一头文件,不会有重复定义的问题,重复定义会编译不过。
回复

使用道具 举报

8#
ID:979694 发表于 2021-11-10 11:05 | 只看该作者
因为很多名称相同会导致不可知的错误,函数调用时侯会出现重名
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表