如何在Sigg中使用C++宏

2024-09-27 00:14:51 发布

您现在位置:Python中文网/ 问答频道 /正文

%{
#define FOOBAR foobar
%}


%define MACRO(cl)

%pythoncode %{
    def cl():
            return
%}

%enddef

MACRO(FOOBAR)

我希望得到的swigpython代码定义了foobar()。但是C宏没有生效-我只有FOOBAR()。在

如何让SWIG接口使用C宏?在


Tags: 代码return定义cldefswigfoobarmacro
1条回答
网友
1楼 · 发布于 2024-09-27 00:14:51

你得到的非常接近。具体来说,你有:

%{
#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本身读取和解释文件的内容)

相关问题 更多 >

    热门问题