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

时间:2010-09-23 11:27:59

标签: c++ c

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

6 个答案:

答案 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 ++代码的项目。