【发布时间】:2012-05-25 19:26:17
【问题描述】:
我们有一个供应商为我们提供了一个 C++ 库和头文件,我正在尝试使用 SWIG 对其进行包装。看来他们对预处理器指令太聪明了:
// top.h
#define DECLARE_WITH_COMMA(a) a,
然后
// foo.h
#include "top.h"
#define MY_TYPES(d) \
d(One) \
d(Two) \
d(Three) \
NumElems
enum MyTypes {
MY_TYPES(DECLARE_WITH_COMMA)
};
这是一种冗长的说法,当我尝试在“foo.h”上运行 SWIG(版本 2.0.4)时,我得到:
foo.h:12: Error: Syntax error in input(1).
因此,鉴于我可能不想更改供应商提供的标头,我的问题是我的选择是什么?
【问题讨论】:
-
第 84 行是什么?你能根据有问题的标题构建一个最小的测试用例,然后在这里发布吗?
-
好的,上面的代码现在代表了一个完整的测试用例。
标签: swig c-preprocessor