这个问题是为了理解包含头文件的标准行为(不是在我的编译器上实现的行为)。
我有两个同名的头文件(但内容不同):
1) /user/include/myheader.h # In standard system folder
2) /private/myheader.h # In my private folder
假设两个 header 都包含相同的多个包含预防宏
#ifndef MYHEADER
#define MYHEADER
...
#endif
我有 C 文件 /private/test.c
,其中包括上述两个 header :
#include <myheader.h> // Includes from standard system folder
#include "myheader.h" // Includes from the folder where test.c is present
由于每个 MYHEADER 定义都有单独的 namespace ,因此在预处理时是否将两个文件的内容都放入 C 文件中?或者第二次包含将被阻止,因为 MYHEADER 已经在同一个命名空间中定义?
最佳答案
所有宏只有一个命名空间,所有宏都在同一个命名空间中。将内容放在不同的头文件中对此没有影响——它们仍然在同一个命名空间中。因此,对于您的示例,第一个 header 将定义 MYHEADER
,这将导致(有效地)忽略第二个 header 。
关于c - #include 预处理器宏 namespace ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12500350/