gpt4 book ai didi

python - 如何在 SWIG 界面中使用 C++ 宏

转载 作者:行者123 更新时间:2023-11-30 02:49:24 25 4
gpt4 key购买 nike

%{
#define FOOBAR foobar
%}


%define MACRO(cl)

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

%enddef

MACRO(FOOBAR)

我希望生成的 SWIG Python 代码定义了 foobar()。但是 C 宏没有生效——我只有 FOOBAR()

如何让 SWIG 接口(interface)使用 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 本身读取和解释文件的内容)

关于python - 如何在 SWIG 界面中使用 C++ 宏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21219431/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com