2011-06-15 68 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