[英]how to use C++ macro in SWIG interface
%{
#define FOOBAR foobar
%}
%define MACRO(cl)
%pythoncode %{
def cl():
return
%}
%enddef
MACRO(FOOBAR)
我希望生成的SWIG Python代码定义了foobar()
。 但是C宏没有生效 - 我只有FOOBAR()
。
如何启用SWIG接口以使用C宏?
你得到的非常接近。 具体来说,你有:
%{ #define FOOBAR foobar %}
但是%{ %}
只是让SWIG将所包含的内容传递给生成的.cxx文件 - 它不解析或考虑那里有什么。 实际上,SWIG忽略了#define
并让编译器稍后处理它。
所以你可以简单地修复它:
#define FOOBAR foobar
%define MACRO(cl)
%pythoncode %{
def cl():
return
%}
%enddef
MACRO(FOOBAR)
这是你希望的,因为SWIG预处理器现在可以看到宏。
(注意:如果您在%{ %}
使用了#include
,则会出于类似的原因再次使用%include
。 %include
会导致SWIG本身读取并解释文件的内容)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.