SWIGを使用してラップしようとしているC++ライブラリとヘッダーを提供してくれたベンダーがあります。プリプロセッサディレクティブでは、それらが半分賢すぎているようです。
// 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).
だから私の質問は、ベンダー提供のヘッダーを変更したくないと思うので、ここでの私のオプションは何ですか?