标题: 单片机模块化编程为什么要防止头文件重复包含? [打印本页]

作者: 黑大不帅就潇洒    时间: 2021-11-9 20:29
标题: 单片机模块化编程为什么要防止头文件重复包含?
#ifndef _add_h
#define _add_h   //防止头文件重复包含

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

#endif



作者: 红叶夜夜笙歌    时间: 2021-11-10 08:49
不加IDE会报重复定义,跟IDE也有关。我以前用IAR重复包含头文件就不会报错,正常都要加或者 直接加 #pragma once
作者: 黄youhui    时间: 2021-11-10 09:41
#ifndef..........#endif 才是防止头文件重复的用的,如果#ifndef后面的关键字在其他地方被宏定义过的话#ifndef....#endif之间的内容不会被编译。这是为了防止有多个相同名字的H文件,所以一般#define后面跟着的内容和H文件名字几乎一致
作者: 郑汉松    时间: 2021-11-10 09:44
最好加上哦,既然是模块化编程,就要规范,不然会有许多莫名其妙的错误的
作者: devcang    时间: 2021-11-10 10:35
为什么要防重复,
变量或函数 重复定义,通常编译不通过
作者: 188610329    时间: 2021-11-10 10:47
因为,有很多傻子会反复包含头文件,比如A的头里面会包B的头,B的头里面又包A的头。然后编译半天没有编译完,还怪编译器不够智能,所以编译器为了免责,就禁止重复包含头文件了(会报错,不通过)。然后,傻子又怪头文件写的滥,不够智能,所以头文件就要增加防止被重复包含的语句了。其实众口难调,还是会有人觉得防止被重复包含不够人性之类的。
作者: gujigujiguji    时间: 2021-11-10 10:51
防止重复定义。加了之后,在不同的地方包含同一头文件,不会有重复定义的问题,重复定义会编译不过。
作者: 陈欣东    时间: 2021-11-10 11:05
因为很多名称相同会导致不可知的错误,函数调用时侯会出现重名




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1