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