关于C语言中头文件重复包含问题

来源:互联网 发布:链式编程 编辑:程序博客网 时间:2024/05/22 07:00

由于现在工程的代码量比较大,多个文件相互进行#include包含头文件时,很容易将头文件重复包含,当重复包含头文件时,预处理器会重复读入整个头文件,且重复使用头文件,使得编译不通过。

#ifndef _HEADERNAME_H#define _HEADERNAME_H 1/*** All the stuff that you want in the header file*/#endif

那么,多重包含的危险就被消除了。当头文件第1次被包含时,它被正确处理,符号_HEADERNAME_H被定义为1.如果头文件再次被包含,通过条件编译,它的所有内容被忽略。符号_HEADERNAME_H按照被包含文件的文件名进行取名,以避免由于其它头文件使用相同的符号引起冲突。
注意前一个例子中的定义也可以写作

#define _HEADERNAME_H

它的效果完全一样。尽管它现在的是一个空字符串而不是“1”,但这个符号仍被定义。
但是,你必须记住预处理器仍将读入整个头文件,即使这个文件的内容会被忽略,这将拖慢编译速度。

1 0