Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/130.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
同时使用c和c+的项目+;文件夹 我能有一个项目,其中有一些用C编写的部分,还有用C++编写的其他部分吗? 这可能吗?_C++_C - Fatal编程技术网

同时使用c和c+的项目+;文件夹 我能有一个项目,其中有一些用C编写的部分,还有用C++编写的其他部分吗? 这可能吗?

同时使用c和c+的项目+;文件夹 我能有一个项目,其中有一些用C编写的部分,还有用C++编写的其他部分吗? 这可能吗?,c++,c,C++,C,是的,非常可能。事实上,通常在稍后重构的遗留系统通常有遗留代码,C是核心,但上面有C++包装。 < P>是的,你可以。C++主要是C.的超集,可能有一些例外,但是在C++程序中包含C写的东西是很正常的。 < P>是的,你可以有一个C和C++代码的项目。是的。 如果您可以控制C代码,那么在您的C头文件中应该有: #ifdef __cplusplus extern "C" { #endif // normal header stuff here #ifdef __cplusplus }; #en

是的,非常可能。事实上,通常在稍后重构的遗留系统通常有遗留代码,C是核心,但上面有C++包装。

< P>是的,你可以。C++主要是C.的超集,可能有一些例外,但是在C++程序中包含C写的东西是很正常的。

< P>是的,你可以有一个C和C++代码的项目。

是的。 如果您可以控制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++。

< p>你需要一个编译器,可以编译两种语言(我没有听说过C++编译器不能做),或者用一个编译编译器编译它们并链接它们(在这种情况下,应用了@ SJE397)。关于这个问题,在。

如何混合使用C和C++:

当你用C++编译器编译C代码时,你不需要它。不,但无论如何都是个好主意。这样你就可以链接到已经编译成“普通”C编译器的代码,而且你的代码更便携。@ SuffeY0C0WB0Y:用C++编译器编译C是个坏主意,因为有效C常常是无效的C++。@迈克:这是真的,但是,正如我的答案中所解释的链接,如果你能改变C代码,它就可以工作。(将其限制在C语言的一部分,即C++的子集),这甚至可能有利于提高代码的质量。@Martin York:修复了guard.Ty。为什么要让它变得复杂。选择一种语言并坚持它!@Martin York:我不同意。(1)我们应该少一些规则,而不是更多(2)它让计算机更接近于理解我们(通过开发技术和工具来应对)。诚然,并非所有项目都能为这一“天上的馅饼”目标做出贡献;)运动部件越少,断裂的可能性越小。是的,这就是我所说的不是所有项目都有能力为解决问题做出贡献的意思:没有足够的时间、动机、金钱等等。这显然会给使用多种语言带来一些挑战。但也会提供一些宝贵的经验和教训。Y大多数的编译系统都会使用适合于语言的编译器,因此他们将使用C编译器编译C代码和C++编译器来编译C++代码(即使C++编译器可能编译C代码)。这是所有构建系统的标准行为(make /VisualStudio/Eclipse等)。主要是操作词。奇怪的GOTCHA的意志杀死你。但奇怪的是,是什么使C++乐趣…它被称为OOP:P。