我正在尝试在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
答案 0 :(得分:5)
这里有两件事要浮现在脑海中。一,您在另一个extern "C"
块内嵌套extern "C"
块。移除外部块。
两,Boolean
不是c ++中的关键字。 bool
是。尝试在包含标题之前添加typedef bool Boolean;
。
答案 1 :(得分:1)
Boolean
不是C
或C++
的标准类型。
您需要找到声明Boolean
的标题,并在包含您的文件之前将其包含在内。
答案 2 :(得分:0)
您需要提供C ++编译器可以理解的Boolean
类型的定义。
extern "C"
这些东西只会影响符号名称的修饰方式,它不会神奇地使C ++编译器理解特定于C的类型。
无论如何,Boolean
不是有效的C.您的包含中可能缺少另一个标题。
答案 3 :(得分:0)
您不需要也不应该在extern "C"
语句周围使用#include
。标题已经做到了这一点。 configstore.h
需要包含Boolean
的定义。正如其他人所提到的,您可以在包含Boolean
之前将configstore.h
的定义添加到源文件(或包含定义),但这是一个坏主意,因为它创建了包含不相关模块之间的顺序依赖关系。