我在这行代码的输入(1)错误中遇到语法错误,在C中我这样做:
在控制台中swig -python myfile.i。
它涉及以下代码,特别是这些typedef的最后一行。
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.
据我所知,bool没有在C中定义,所以我认为swig会让这个没有问题。我在VS 2010中编译为c,它很好。
标记
答案 0 :(得分:2)
C确实有bool
类型(实际上是一个宏),但它是C99功能,您必须包含stdbool.h
才能获得bool
;如果您不包含_Bool
,则只有stdbool.h
。
VS2010不支持C99,它只支持C89(AFAIK),因此typedef
可以正常使用。
我猜某个地方正在引入stdbool.h
,这会弄乱你的typedef
,因为它看起来像这样:
typedef unsigned int _Bool;
当编译器看到它并且编译器根本不喜欢它时。