加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – “%include”和“#include”之间的差异

发布时间:2020-12-16 06:00:53 所属栏目:百科 来源:网络整理
导读:在SWIG中,“%include”指令与标准C“#include”有什么区别? 例如,在所有教程中,为什么它们通常看起来像这样: %module my_module%{#include "MyHeader.h"%}%include "MyHeader.h" 这对我来说似乎是多余的.也许有知识的人可以澄清. 有没有一个包含C代码的首
在SWIG中,“%include”指令与标准C“#include”有什么区别?

例如,在所有教程中,为什么它们通常看起来像这样:

%module my_module

%{
#include "MyHeader.h"
%}

%include "MyHeader.h"

这对我来说似乎是多余的.也许有知识的人可以澄清.

有没有一个包含C代码的首选方法?

解决方法

%{…%}中的内容直接传递到输出;它本身不是SWIG解释的.所以#include是确保生成的C/C++代码包含该头.

相反,%包含SWIG指令.它告诉SWIG在继续之前处理该头文件.这样SWIG将了解(并生成包装器)在该头文件中声明的类型和功能.

如果标题非常复杂,可能会混淆SWIG或导致非常大的输出(因为SWIG尝试为其内部的所有内容生成包装器).在这种情况下,您最好手动声明您需要SWIG处理的标题部分,并省略%include.但是您仍然可能需要#include以便生成的C进行编译.

[更新]

对于“首选”,SWIG更多的是什么比“首选”什么工作…如果你有一个非常干净的头文件为一个类声明一个漂亮的界面,你可以只包括它,并有SWIG自动生成包装.如果您的头文件非常毛茸茸(例如iostream),您应该手动告诉SWIG要包装什么.但是没有一个很难的规则.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读