2012-01-05 94 views
1

我想在cpp文件中包含「c」頭文件。 c頭文件有關鍵字「布爾」。在C++文件中包含c頭文件

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:error: '布爾'不命名一個類型

請你讓我知道我怎麼可以在cpp文件中添加c頭文件 在此先感謝!

-Vasavi

+0

與C或C++無關。您只需要定義類型(或包含具有該定義的文件)。 – littleadv 2012-01-05 12:35:06

+0

'布爾'不是C或C++中的類型。你是否有'typedef'或宏,因爲這在C中是不可用的。 – hmjd 2012-01-05 12:35:45

+0

包含的工作,有一個與'Boolean'類型有關的問題。 – Paul 2012-01-05 12:36:44

回答

5

這裏有兩件事情值得思考。一,你在另一塊extern "C"塊中嵌套一個extern "C"塊。去除外部塊。

二,Boolean不是C++中的關鍵字。 bool是。嘗試在包含標頭之前添加typedef bool Boolean;

+4

「boolean」不是C++類型,它是「bool」。 – haffax 2012-01-05 12:47:43

1

Boolean不是一個標準類型要麼CC++

你需要找到標題Boolean已被聲明,並在包含文件之前包含它。

0

您需要提供C++編譯器可以理解的Boolean類型的定義。

extern "C"東西只是影響的符號名稱是如何錯位,它不會神奇地讓C++編譯器瞭解特定於C類型。

不是說Boolean是有效的C,無論如何。你的包含中可能還有另一個頭文件丟失。

0

您不需要也不應該使用extern "C"圍繞#include聲明。標題已經這樣做了。 configstore.h需要包含Boolean的定義。正如其他人提到的那樣,您可以在包含configstore.h之前將Boolean的定義添加到源文件(或包括定義),但這是一個壞主意,因爲它創建了無關模塊之間的順序依賴關係。