Mamy dostawcę, który dostarczył nam bibliotekę C++ i nagłówki, które próbuję opakować za pomocą SWIG. Wydaje się, że są one zbyt mądry o połowę z dyrektywami preprocesora:Błędy SWIG z powodu dyrektywy preprocesora
// top.h
#define DECLARE_WITH_COMMA(a) a,
a następnie
// foo.h
#include "top.h"
#define MY_TYPES(d) \
d(One) \
d(Two) \
d(Three) \
NumElems
enum MyTypes {
MY_TYPES(DECLARE_WITH_COMMA)
};
Jakie to wszystko jest rozwlekłości sposób powiedzenia, że gdy próbuję uruchomić haust (wersja 2.0 0,4) na „Foo.h”, otrzymuję:
foo.h:12: Error: Syntax error in input(1).
Więc moje pytanie jest, jakie są moje opcje tutaj, biorąc pod uwagę, że prawdopodobnie nie chcesz zmieniać nagłówki dostawcy dostarczone?
Co to jest linia 84? Czy możesz skonstruować minimalny przypadek testowy na podstawie nagłówków, o których mowa, i opublikować go tutaj? –
Dobry pomysł, spróbuję. – laslowh
OK, powyższy kod reprezentuje pełny przypadek testowy. – laslowh