【发布时间】:2012-09-19 18:02:02
【问题描述】:
这个问题是为了了解头文件包含的标准行为(不是我的编译器上实现的那个)。
我有两个同名的头文件(但内容不同):
1) /user/include/myheader.h # In standard system folder
2) /private/myheader.h # In my private folder
假设两个标头都包含相同的多重包含防止宏
#ifndef MYHEADER
#define MYHEADER
...
#endif
我有 C 文件 /private/test.c,其中包含上述两个头文件:
#include <myheader.h> // Includes from standard system folder
#include "myheader.h" // Includes from the folder where test.c is present
由于每个 MYHEADER 定义都有单独的名称空间,因此两个文件的内容是否在预处理时进入 C 文件?或者由于 MYHEADER 已经在同一个命名空间中定义,第二个包含将被阻止?
【问题讨论】:
-
除非你在某个地方
#undef MYHEADER,否则第二个包含基本上会包含一个空文件。