c语言中关于头文件重复包含
1、如果头文件A包含头文件C,同时头文件B也包含头文件C,而写的程序中包含了头文件A,头文件B,然后在编译的时候就会出现头文件C重复包含的错误
这个错误 只要在自己写的头文件中这样写
#ifndef X //X为你的标识符,保持唯一,可以长点,比如 #ifndef _INCLUDE_XXXXXX_H_
#define X
//这里是你的头文件
#endif
上面的X可以随便取名(可以用来“装”头文件,所以X一般取名为大写的头文件的名字,只不过把"."换成“_”),只要保证#ifndef和#define后面是同一个X就可以了,只是一个标识而已。翻译成中文就是,如果已经#define X了,后面的就不执行了。这样在同一个c文件中,保证可以只#include一个头文件,避免“在同一个c文件中对一个头文件include两次”的错误(第一次包含了该头文件后,就已经#define 了一次X,第二次包含时会遇到“#ifndef X”的判断,既然已经定义,只好对这个判断说yes了,后面的不再执行,
头文件就不会再加进去)。
2、写的代码里, 头文件A需要包含头文件B,头文件B需要包含头文件C,这种情况#include A就没有问题,不会出现重复包含的错误
注意:这里的#ifndef预处理是要解决在同一个c文件中包含了两次同一个头文件的错误,而在不同的c文件中是可以包含同一个头文件的。
如果不用#ifndef来对头文件做标记,又想“一劳永逸”地解决问题,不需要担心重复包含,则就要形成自觉,不要在头文件里定义变量或函数,只声明,这样多次include这个头文件时包含的都是声明,就没有问题,因此c语言里是允许多次声明同一个函数或变量的。 |
|