我使用SWIG(4.0.1(从我的C头文件生成Python模块。SWIG将以下定义正确地处理到python模块中:
#define SWIG_TEST_DEFINE 3
(在生成的python模块my_interface.py中看起来是这样的(:
SWIG_TEST_DEFINE = _my_interface.SWIG_TEST_DEFINE
但不会接受(并添加到生成的python模块中(:
#define SWIG_TEST_DEFINE ((int)3)
我正在寻找一种解决方案,使SWIG也处理指定类型的这些构造。
如果您愿意更改标题,您可以执行以下操作,以便SWIG将变量定义为3
,但宏仍将针对C:进行更正
#ifdef SWIG
#define SWIG_TEST_DEFINE 3
#else
# define SWIG_TEST_DEFINE ((int)3)
#endif
如果不愿意更改标题,可以正常地将其包括在内,然后仅为SWIG重新定义宏。以下假设test.h
包含#define SWIG_TEST_DEFINE ((int)3)
:
%module test
%{
#include "test.h"
%}
%include "test.h"
#undef SWIG_TEST_DEFINE
#define SWIG_TEST_DEFINE 3