定义bool

时间:2016-04-04 10:12:41

标签: java c boolean swig

SWIG无法处理以下模块,错误消息为" example.i:2:错误:输入中的语法错误(1)"

%module example
typedef unsigned char bool;
bool isEven(int number);

bool更改为boll时,一切正常。似乎SWIG将bool视为C中的内置类型。但是只有_Bool是C99中的内置类型,并且除非包含stdbool.h

,否则未定义bool

我有一个大型接口,我需要为java包装,其中包含以下typedef:

#ifndef __cplusplus
typedef unsigned char bool;
#endif

我可以通过添加

解决问题
#define __cplusplus
在包含定义接口的标头之前,

到我的SWIG模块文件。 但是在这种情况下,包括cpointer.i不再起作用(错误:#ifdef缺少标识符,包含#ifdef __cplusplus的每一行cpointer.i都会出现

有关如何使用我的界面头文件而不更改它的任何建议(即不删除我的bool typedef)并且仍能使用cpointer.i?

1 个答案:

答案 0 :(得分:1)

如果在您的情况下确实没有定义bool,那么在SWIG接口文件中使用宏将其重命名为其他内容应该没有问题,例如:

%module example
#define bool uchar_bool
typedef unsigned char bool;
bool isEven(int number);