头文件不参加编译,为什么还要包含到源文件中?
头文件: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