包括c ++文件中的c头

我试图在cpp文件中包含一个“c”头文件。 c头文件具有关键字“Boolean”。

c标题看起来像这样:

#ifndef _CONFIGSTORE_H_ #define _CONFIGSTORE_H_ #ifdef __cplusplus extern "C" { #endif Boolean ConfigStoreIsPassword(char *pName); #ifdef __cplusplus } #endif #endif //_CONFIGSTORE_H_ 

下面是我在cpp文件中包含c头的方式:

 extern "C"{ #include "configstore.h" } 

要么

 #ifdef __cplusplus extern "C" { #endif #include "configstore.h" #ifdef __cplusplus } #endif 

无论哪种方式我包括,我得到以下错误:../../../../src/Common/framework/configstore.h:52:错误:’布尔’不命名类型

你能不能让我知道如何在cpp文件中添加c标题提前谢谢!!

-Vasavi

这里有两件事要浮现在脑海中。 一,你在另一个extern "C"块中嵌套一个extern "C"块。 卸下外块。

二, Boolean值不是c ++中的关键字。 bool是。 尝试添加typedef bool Boolean; 在您的标题包含之前。

Boolean不是CC++的标准类型。

您需要找到声明Boolean的标头,并在包含文件之前包含它。

您需要提供C ++编译器可以理解的Boolean类型的定义。

extern "C"东西只会影响符号名称的破坏,它不会神奇地使C ++编译器理解特定于C的类型。

无论如何, Boolean都不是有效的C. 您的包含可能缺少另一个标题。

您不需要也不应该在#include语句周围使用extern "C" 。 标题已经做到了这一点。 configstore.h需要包含Boolean的定义。 正如其他人所提到的,你可以在包含configstore.h之前将Boolean的定义添加到源文件(或包含定义),但这是一个坏主意,因为它创建了包含不相关模块之间的顺序依赖关系。