2024-09-27 00:14:51 发布
网友
%{ #define FOOBAR foobar %} %define MACRO(cl) %pythoncode %{ def cl(): return %} %enddef MACRO(FOOBAR)
我希望得到的swigpython代码定义了foobar()。但是C宏没有生效-我只有FOOBAR()。在
foobar()
FOOBAR()
如何让SWIG接口使用C宏?在
你得到的非常接近。具体来说,你有:
%{ #define FOOBAR foobar %}
然而,%{ %}只是让SWIG将包含的内容传递到生成的.cxx文件中—它不解析或考虑其中的内容。实际上,SWIG忽略了#define,并让编译器稍后处理它。在
%{ %}
#define
因此,您可以简单地用以下方法进行修复:
#define FOOBAR foobar %define MACRO(cl) %pythoncode %{ def cl(): return %} %enddef MACRO(FOOBAR)
因为SWIG预处理器现在可以看到宏了,所以它的工作与您希望的一样。在
(注意:如果您在%{ %}内使用了#include,那么您将再次出于类似的原因使用%include。%include使SWIG本身读取和解释文件的内容)
#include
%include
你得到的非常接近。具体来说,你有:
然而,
%{ %}
只是让SWIG将包含的内容传递到生成的.cxx文件中—它不解析或考虑其中的内容。实际上,SWIG忽略了#define
,并让编译器稍后处理它。在因此,您可以简单地用以下方法进行修复:
因为SWIG预处理器现在可以看到宏了,所以它的工作与您希望的一样。在
(注意:如果您在
%{ %}
内使用了#include
,那么您将再次出于类似的原因使用%include
。%include
使SWIG本身读取和解释文件的内容)相关问题 更多 >
编程相关推荐