SWIG无法处理以下模块,错误消息为" example.i:2:错误:输入中的语法错误(1)"
%module example
typedef unsigned char bool;
bool isEven(int number);
将bool
更改为boll
时,一切正常。似乎SWIG将bool视为C中的内置类型。但是只有_Bool是C99中的内置类型,并且除非包含stdbool.h
我有一个大型接口,我需要为java包装,其中包含以下typedef:
#ifndef __cplusplus
typedef unsigned char bool;
#endif
我可以通过添加
解决问题#define __cplusplus
在包含定义接口的标头之前,到我的SWIG模块文件。
但是在这种情况下,包括cpointer.i不再起作用(错误:#ifdef缺少标识符,包含#ifdef __cplusplus
的每一行cpointer.i都会出现
有关如何使用我的界面头文件而不更改它的任何建议(即不删除我的bool typedef)并且仍能使用cpointer.i?
答案 0 :(得分:1)
如果在您的情况下确实没有定义bool
,那么在SWIG接口文件中使用宏将其重命名为其他内容应该没有问题,例如:
%module example
#define bool uchar_bool
typedef unsigned char bool;
bool isEven(int number);