我对 C 和 C++ 中的预处理器指令有疑问。
我有以下代码:
#ifdef __cplusplus
//part A
extern "C"
{
// somecode here
}
#else
//part B
#endif
我知道 c++ 编译器预定义了 __cplusplus 将 c 编译器没有。
而我把这组代码放到了ac头文件中,c++文件中就会包含这个c头文件。我的问题是:如果文件是由c++编译器编译的,它会编译A部分,如果它是由ac编译器编译的,它会编译B部分,但通常,我们使用这段代码来制作c++文件和c文件相互交互,如果我们上面有这样的代码,我的意思是我们同时拥有C和C++文件,并且我们使用gcc编译器,这段代码是如何编译的?只有A部分被编译?还是只编译 B 部分?还是代码分为两部分,A部分为C++编译,B部分同时为C文件编译?