同时包含c和c ++文件的项目

Cod*_*r25 6 c c++

我可以有一个项目,其中一些部分用c编写,其他部分用c ++编写?这可能吗 ?

sje*_*397 8

是.

如果你有C代码的控制权,那么在你的C头文件中你应该有:

#ifdef __cplusplus
extern "C" {
#endif

// normal header stuff here

#ifdef __cplusplus
};
#endif
Run Code Online (Sandbox Code Playgroud)

这样,当C和CPP代码文件都包含它们时,它们可以被正确解释.

如果您通过标题在C++中包含C代码,并且它不包含上面的代码,并且您没有足够的控制权来进行必要的修改,请务必使用例如

extern "C" {
#include "some_c_header.h"
};
Run Code Online (Sandbox Code Playgroud)

请注意,您也可以将其用作声明的修饰符,例如:

extern "C" void someFunction();
Run Code Online (Sandbox Code Playgroud)

请注意,C++具有导入C功能的这种机制.C没有一个用于导入C++,并且尝试在C编译单元中包含C++代码将很快以一堆错误消息结束.这样做的一个结果是你的主要功能需要是C++.

  • 不,但无论如何这都是个好主意.通过这种方式,您可以链接到已经使用"普通"C编译器编译的代码,并且您的代码更具可移植性. (3认同)
  • @Space_C0wb0y:使用C++编译器编译C是个坏主意,因为有效的C通常不是有效的C++. (2认同)