我从文档中了解到,%{ %}
之间的内容是插入到包装器中的,%inline %{ %}
怎么样?
它是一样的吗?如果不是,有什么区别?
也许我们可以找到许多%inline %{ %}
但只出现%{ %}
的一次?
非常感谢你!
答案 0 :(得分:9)
您可以出现任意数量的块类型。 %{ ... }%
只是在SWIG生成的文件中逐字插入块中的内容。它的使用是为了生成的文件将被编译,即你通常放置任何包含和定义的东西,以便生成文件进行编译。
OTOH,来自文档:
%inline指令将逐字输入的所有代码插入到接口文件的标题部分中。然后由SWIG预处理器和解析器解析代码。
所以%inline %{ ... %}
做了两件事:它将声明放在生成的包装器文件中,并且它导致SWIG生成包装器代码,以便可以从目标语言调用块中的函数等(Python ,Lua,无论如何)。 %{ ... }%
不是这种情况:这样的块中的代码不会被包装,只是在生成的包装器文件中逐字转储。
不要害怕打开SWIG生成的*_wrap.cpp
:在两种类型的块中放置一些易于搜索的代码,并查看它们在包装文件中的最终位置,以及生成的其他代码。