我刚刚阅读了一个关于 SO 的问题,讨论了一段代码在 C 和 C++ 中都有效但会在每种语言中产生不同行为的场景。
这就引出了一个问题:在 C++ 代码中包含 C 头文件时,这是否会成为问题?
我从这个问题中知道你应该包含这样的 C 头文件:
extern "C" {
#include <your_os_or_library_header_in_c.h>
}
但到目前为止我发现的只是 extern "C" 只保证名称修改被关闭。
我找不到任何关于它是否将所有语句评估为 C 的信息,因此例如sizeof('a')
or 10 //* comment */ 2
(您可以在内联函数中找到)被解析为 C 而不是 C++。(请注意,依赖编写 C 标头的人的这种行为显然是一个坏主意,但我是从纯粹的学术角度提出的“如果?”。)
C++ 标准是否说包含代码块extern "C"
意味着其中的所有语句都必须解析为 C?