У нас есть поставщик, который предоставил нам С++-библиотеку и заголовки, которые я пытаюсь обернуть с помощью 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)
};
Что является долгожданным способом сказать, что когда я пытаюсь запустить SWIG (версия 2.0.4) на "foo.h", я получаю:
foo.h:12: Error: Syntax error in input(1).
Итак, мой вопрос в том, каковы мои варианты здесь, учитывая, что я, вероятно, не хочу менять заголовки, поставляемые поставщиками?