排除 ifdef 代码块的接口生成
Excluding interface generation for ifdef code block
我正在尝试为 C++ 库生成 Go 接口。其中一个库 header 有这样的代码块
library.h
...
#ifndef DISABLE_FEATURE_X
struct TypeX
{
TypeX();
{
...
}
};
#endif
...
然后我在界面中包含 header,如下所示
library.i
%{
#include <library.h>
%}
...
%include <library.h>
当我生成定义了宏 DISABLE_FEATURE_X 的 Go 接口时,Swig 会为 TypeX
生成接口代码,即使它被宏 DISABLE_FEATURE_X
.
排除
如何告诉 Swig 在生成界面时排除代码块?
最简单的方法是在 SWIG 接口内定义宏,这样 SWIG 预处理器就看不到函数:
%{
#include <library.h>
%}
...
#define DISABLE_FEATURE_X
%include <library.h>
应该可以解决问题。
SWIG 本身也支持 -D 命令行参数,因此如果您愿意,也可以像调用编译器一样调用 swig -DDISABLE_FEATURE_X ...
我正在尝试为 C++ 库生成 Go 接口。其中一个库 header 有这样的代码块
library.h
...
#ifndef DISABLE_FEATURE_X
struct TypeX
{
TypeX();
{
...
}
};
#endif
...
然后我在界面中包含 header,如下所示
library.i
%{
#include <library.h>
%}
...
%include <library.h>
当我生成定义了宏 DISABLE_FEATURE_X 的 Go 接口时,Swig 会为 TypeX
生成接口代码,即使它被宏 DISABLE_FEATURE_X
.
如何告诉 Swig 在生成界面时排除代码块?
最简单的方法是在 SWIG 接口内定义宏,这样 SWIG 预处理器就看不到函数:
%{
#include <library.h>
%}
...
#define DISABLE_FEATURE_X
%include <library.h>
应该可以解决问题。
SWIG 本身也支持 -D 命令行参数,因此如果您愿意,也可以像调用编译器一样调用 swig -DDISABLE_FEATURE_X ...