SWIG:“%inline%{%}”和“%{%}”之间有什么不同?

时间:2014-03-01 20:16:50

标签: inline swig

我从文档中了解到,%{ %}之间的内容是插入到包装器中的,%inline %{ %}怎么样?

它是一样的吗?如果不是,有什么区别?

也许我们可以找到许多%inline %{ %}但只出现%{ %}的一次? 非常感谢你!

1 个答案:

答案 0 :(得分:9)

您可以出现任意数量的块类型。 %{ ... }%只是在SWIG生成的文件中逐字插入块中的内容。它的使用是为了生成的文件将被编译,即你通常放置任何包含和定义的东西,以便生成文件进行编译。

OTOH,来自文档:

  

%inline指令将逐字输入的所有代码插入到接口文件的标题部分中。然后由SWIG预处理器和解析器解析代码。

所以%inline %{ ... %}做了两件事:它将声明放在生成的包装器文件中,并且它导致SWIG生成包装器代码,以便可以从目标语言调用块中的函数等(Python ,Lua,无论如何)。 %{ ... }%不是这种情况:这样的块中的代码不会被包装,只是在生成的包装器文件中逐字转储。

不要害怕打开SWIG生成的*_wrap.cpp:在两种类型的块中放置一些易于搜索的代码,并查看它们在包装文件中的最终位置,以及生成的其他代码。