我正在尝试使用SWIG为一个我无法控制源代码的库生成Python接口模块。这个库,由于某些原因,有这样一行代码:
#define VOID void
这会给SWIG带来各种问题;它似乎认为VOID是这些函数将返回的实际对象。
有没有办法告诉SWIG,VOID
表示void
?
VOID
。如果我将接口文件中所有原型从使用 VOID
改为使用 void
,问题就解决了。等一下...如果你没有这个库的源代码,我假设你的意思是#define VOID void
发生在一个头文件(.H)中,你正在包含它来使用这个库。如果库已经编译好了,那么#define VOID void
不会影响它,并且只与那些头文件有关。#define指令只影响您的预处理器,它编译您的代码(库已经构建好了)。所以,如果只有那些头文件使用VOID,那么请确保在这些头文件中,顶部有一个#define VOID void
,底部有一个#undef VOID
来删除VOID宏。
#define VOID void
的定义。 - martineau
void
关键字的ANSI C编译器一起使用而设计的;对于这样的编译器,它可能有#define VOID int
或#define VOID /* nothing */
。但这并没有回答你的问题。 - Keith Thompsonperl -p -i -e s/VOID/void/ *
- piokuc