【发布时间】:2016-07-23 19:57:01
【问题描述】:
SWIG 无法处理以下模块,并显示错误消息“example.i:2: Error: Syntax error in input(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 的任何建议?
【问题讨论】:
-
好像bool这个名字已经定义好了。例如,它可以是一个宏。所以你需要检查什么是布尔值。而不是 bla...bla..bla.. 您应该显示错误消息。
-
我什么都不包含,所以没有代码可以定义bool这个名字。当我在 example.i 上运行 SWIG 时,它只包含上面的 3 行,我得到“example.i:2: Error: Syntax error in input(1)。”