sách gpt4 ăn đã đi

c++ - "%include"和 "#include"之间的区别

In lại Tác giả: IT Lão Cao 更新时间:2023-10-28 22:36:54 27 4
mua khóa gpt4 giày nike

在 SWIG 中,“%include”指令与标准 C“#include”有什么区别?

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

%module my_module

%{
#include "MyHeader.h"
%}

%include "MyHeader.h"

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

是否有包含 C++ 代码的首选方法?

câu trả lời hay nhất

%{ ... %}里面的东西直接传到输出;它本身并不由 SWIG 解释。所以 #bao gồm 是为了确保生成的 C/C++ 代码包含该 header 。

Ngược lại,

%include 是一个 SWIG 指令。它告诉 SWIG 在继续之前处理该头文件。这样 SWIG 将了解(并为其生成包装器)在该头文件中声明的类型和函数。

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

[更新]

至于“首选”,SWIG 更多的是关于什么是有效的,而不是什么是“首选”......如果你有一个非常干净的头文件为单个类声明一个很好的接口(interface),你可以只 %include 它并让 SWIG 自动生成包装器。如果您的头文件非常复杂(例如 iostream),您应该手动告诉 SWIG 要包装什么。但没有硬性规定。

关于c++ - "%include"和 "#include"之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6285212/

27 4 0
Đề xuất bài viết: c++ - 关于 boost::swap 的问题
Đề xuất bài viết: c++ - 编译器可以省略以下拷贝吗?
Đề xuất bài viết: c++ - Visual C++ 调试器可视化工具?
Đề xuất bài viết: c++ - 编译器内联函数有多深?
Cựu chiến binh CNTT
Hồ sơ

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá taxi Didi miễn phí
Phiếu giảm giá taxi Didi
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress