包括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
不是C
或C++
的标准类型。
您需要找到声明Boolean
的标头,并在包含文件之前包含它。
您需要提供C ++编译器可以理解的Boolean
类型的定义。
extern "C"
东西只会影响符号名称的破坏,它不会神奇地使C ++编译器理解特定于C的类型。
无论如何, Boolean
都不是有效的C. 您的包含可能缺少另一个标题。
您不需要也不应该在#include
语句周围使用extern "C"
。 标题已经做到了这一点。 configstore.h
需要包含Boolean
的定义。 正如其他人所提到的,你可以在包含configstore.h
之前将Boolean
的定义添加到源文件(或包含定义),但这是一个坏主意,因为它创建了包含不相关模块之间的顺序依赖关系。