如何在C ++中使用C代码

只是一个小问题:C ++可以在程序中使用C头文件吗?

这可能是一个奇怪的问题,基本上我需要在C ++中使用来自其他程序(用C语言编写)的源代码。 两个头文件一般有什么区别吗? 也许如果我改变一些图书馆…我希望你能帮助我。

是的,您可以在C ++代码中包含C头。 添加这个是正常的:

#ifdef __cplusplus extern "C" { #endif // C header here #ifdef __cplusplus } #endif 

这样C ++编译器就知道函数声明等应该被视为C而不是C ++。

如果您正在使用C ++代码一起编译C代码作为项目的一部分,您应该只需按常规包含头文件,并使用C ++编译器模式编译代码 – 但是,某些C代码赢了用C ++编译器“干净地”编译(例如,使用malloc将需要转换)。

如果启用,另一方面,您有一个库或其他不属于您的项目的代码,那么您需要确保标题被标记为extern "C" ,否则C ++命名约定为已编译的名称函数将适用,这与C编译器使用的命名约定不匹配。

这里有两个选项,您可以编辑头文件,也可以添加

 #ifdef __cplusplus extern "C" { #endif ... original content of headerfile goes here. #ifdef __cplusplus } #endif 

或者,如果您无法编辑这些标题,则可以使用以下格式:

 #ifdef __cplusplus extern "C" { #endif #include " #ifdef __cplusplus } #endif 

是的,但您需要告诉C ++编译器标头中的声明是C:

 extern "C" { #include "c-header.h" } 

许多C头已包含这些,包含在#if defined __cplusplus 。 这可能有点奇怪(C头中的C ++语法),但它通常是为了方便起见。