包括c ++文件中的c头

时间:2012-01-05 12:32:54

标签: 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

4 个答案:

答案 0 :(得分:5)

这里有两件事要浮现在脑海中。一,您在另一个extern "C"块内嵌套extern "C"块。移除外部块。

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

答案 1 :(得分:1)

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

您需要找到声明Boolean的标题,并在包含您的文件之前将其包含在内。

答案 2 :(得分:0)

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

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

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

答案 3 :(得分:0)

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