我可以有一个项目,其中一些部分用c编写,其他部分用c ++编写? 这可能吗?
答案 0 :(得分:8)
是
如果您可以控制C代码,那么在C头文件中应该有:
#ifdef __cplusplus
extern "C" {
#endif
// normal header stuff here
#ifdef __cplusplus
};
#endif
这样,当C和CPP代码文件都包含它们时,它们就可以正确解释。
如果您通过标题在C ++中包含C代码,并且它不包含上述代码,并且您没有足够的控制权来进行必要的修改,请务必使用例如。
extern "C" {
#include "some_c_header.h"
};
请注意,您也可以将其用作声明的修饰符,例如:
extern "C" void someFunction();
请注意,C ++具有导入C功能的这种机制。 C没有一个用于导入C ++,并且尝试在C编译单元中包含C ++代码将很快以一堆错误消息结束。这样做的一个结果是你的主要功能需要是C ++。
答案 1 :(得分:2)
你需要一个可以编译这两种语言的编译器(我没有听说过C ++编译器无法做到这一点),或者使用适合的编译器编译它们并将它们链接起来(在这种情况下是answer的@ sje397适用)。 C++ FAQ Lite中有关于这个主题的很好的解释。
答案 2 :(得分:2)
答案 3 :(得分:1)
是的,这是非常有可能的。实际上,通常后来重构的遗留系统通常都有遗留代码,它以C为核心,但在其上面有C ++包装。
答案 4 :(得分:1)
是的,你可以。 C ++主要是C的超集。可能有一些例外,但在大多数情况下,在C ++项目中包含用C编写的东西是很正常的。
答案 5 :(得分:1)
是的,您可以拥有一个包含C和C ++代码的项目。