【发布时间】:2013-02-12 16:40:01
【问题描述】:
我正在尝试使用 SWIG 为我无法控制其来源的库生成 python 接口模块。出于某种原因,图书馆有这行:
#define VOID void
这会导致 SWIG 出现各种问题;似乎认为 VOID 是这些函数将返回的实际对象。
我有什么办法可以告诉 SWIG VOID 的意思是 void?
【问题讨论】:
-
该库可能设计用于不支持
void关键字的 pre-ANSI C 编译器;对于这样的编译器,它可能有#define VOID int或#define VOID /* nothing */。不过,这并不能回答您的问题。 -
你说你无法控制库的来源,但你有标题。我认为您应该能够在标题中将 VOID 重命名为其他名称(也许:void),它应该可以解决问题,不是吗?
-
perl -p -i -e s/VOID/void/ * -
@piokuc 这可能是一个选项,但我不是唯一在这个存储库中使用这些标题的人,编辑它们是我宁愿不练习的最后手段。
-
好吧,您可以复制它只是为了创建 SWIG 绑定...