首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

头文件不参加编译,为什么还要包含到源文件中?解决方案

2012-03-24 
头文件不参加编译,为什么还要包含到源文件中?头文件:2440addr.h(在头文件中包括条件编译块)#ifndef __2440

头文件不参加编译,为什么还要包含到源文件中?
头文件:2440addr.h (在头文件中包括条件编译块)
#ifndef __2440ADDR_H__
#define __2440ADDR_H__

......
......


#endif  

这个头文件被很多源文件包含,这里假设只有两个源文件包含了这个头文件

源文件:Main.c

#include "2440addr.h"

........
...........
......

源文件:LCD.c

#include "2440addr.h"

...........
.........


好,现在又两个源文件包含了头文件2440addr.h,但是2440addr.h在其中一个源文件编译的时候会参与编译,但是在另外一个源文件编译的时候,因为__2440ADDR_H__已经定义过了,所以由于条件编译块的作用,在另外一源文件中,这个头文件就不会参与编译了,那既然这个头文件在另外一个源文件中不参与编译,为什么还要把这个头文件包含进去呢?

[解决办法]
哈哈,楼主你太可爱了。
include就是把整个头文件包进来,预处理完以后就是把include这一行换成了整个文件。
文件头写#ifndef这样是防止重复包含,就是头文件又包含别的头文件,c文件中包含多个h,没准某个h就把前面的h有包含了一遍。
两个c中的h没有任何关系,不存在你说的,一个包含过,另一个就已经定义过了,你不信可以试验一下,在头文件中加上#error,如果真像你想的那样,就只有一个c会报错,另一个能编过。试验一下是不是。
[解决办法]
http://hi.baidu.com/zhwan2009/blog/item/11041011f79fc98b6438db60.html

热点排行