我们有一个供应商为我们提供了一个 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).
所以我的问题是我的选择是什么,因为我可能不想更改供应商提供的标头?