Swig 使用非常量声明来确定 typedeffed 数组的大小

Swig using non constant declarations for size of typedeffed array

我正在尝试用 Python 的 swig 包装一个 C 项目。 我有一个 .h 文件,我用 %include 包含在 swig 中。我希望包装头文件中的所有内容。

我可以做些什么来处理以下错误,而无需编辑源头文件。

test.h

#define SEPARATOR "-"
#define SEPARATOR_SIZE ((int)sizeof(SEPARATOR))
typedef char SEPARATOR_ARRAY [SEPARATOR_SIZE];

test.i

%module test
%{
  #include "test.h"
%}
%include test.h

在 运行 swig -python test.i 之后我得到 test.h:3: Error: Syntax error in input(1).

使用 swig 版本 4.0.2。

找到答案:

Swig 仅支持 sizeof()。由于这个问题,已经提交了 swig 的 github,它处理 sizeof 中一些进一步值的解析,例如“foo”'f' 和 300,但这似乎仍然会在以后导致编译问题。

https://github.com/swig/swig/commit/7ab24e7e865e0f1281f002fefdaba11b80416ea2