2011-06-15 53 views
1

我得到的輸入(1)錯誤的語法錯誤此行的代碼,在C當我這樣做:痛飲錯誤:語法錯誤輸入(1)

痛飲-python myfile.i控制檯。

它涉及以下代碼,特別是這些typedefs的最後一行。

typedef unsigned short WORD;  
typedef unsigned int DWORD; 
typedef unsigned long long QWORD; 
typedef unsigned char BYTE;  
typedef unsigned int bool; //<= THIS LINE OF CODE TRIGGERS THE ERROR. 

據我所知,布爾是不是在C定義,因此我想痛飲會讓這個去,沒有問題。我在VS 2010中編譯爲c,這很好。

馬克

回答

2

C不用有bool類型(實際上是宏),但它是一種C99功能,並且您必須包括stdbool.h得到bool;如果您不包括stdbool.h,則只有_Bool

VS2010不支持C99,它只支持C89(AFAIK),因此typedef可以正常工作。

我猜想,一些地方在stdbool.h拉動和被搞亂你typedef,因爲它看起來就像這樣:

typedef unsigned int _Bool; 

當編譯器看到它,編譯器將不一樣,在所有。

+0

您認爲GCC/swig會將其視爲?我沒有明確地包含stdbool.h。 我有 的#include 的#include 的#include 包括在內。做任何這些包括stdbool? – limenuke 2011-06-15 19:11:34

+0

@limenuke:我不是誰拉'stdbool.h'。試試一個簡單的「hello world」程序,它使用這些頭文件幷包含你的'typedef unsigned int bool;'。也許swig正在把它拉到某個地方。 – 2011-06-15 19:15:42

+0

我發現我不需要使用小寫的布爾,並將使用布爾(我已測試和工作)。無論哪種方式,我都無法測試你的方法。不管怎麼說,多謝拉! – limenuke 2011-06-15 21:02:14