extern
通常,在任何s之外的全局命名空间中包含 C++ 中的标准库头文件,如下所示:
#include <stdint.h>
int main() { }
但是,如果您在其中包含一个标准库头文件,会发生什么?例如:
extern "C" {
#include <stdint.h>
}
int main() { }
或者
extern "C++" {
#include <stdint.h>
}
int main() { }
它是否指定了在这两种情况下应该发生的事情,或者它是实现定义的,甚至是未定义的?
C++11 17.6.2.3p1 说 C++ 标准库头文件放入extern "C++"
了<stdint.h>
. C++11 17.6.2.2p3 说标头只能在#include
任何“外部声明”之外;这个短语在 C++11 中只出现在这个地方,所以我不确定它是否适用于这里。(我假设 C99 对此无话可说。)
(对于我的特殊情况,不能选择使用 C++ 的<c*>
标准头文件,所以我真的只需要知道老式 C 头文件的语义。)