У нас есть поставщик, который предоставил нам библиотеку и заголовки C++, которые я пытаюсь обернуть с помощью SWIG. Оказывается, что они слишком умны наполовину с директивами препроцессора:Ошибки 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)
};
Что это все longwinded способ сказать, что, когда я пытаюсь запустить SWIG (версия 2.0 +0,4) на «foo.h», я получаю:
foo.h:12: Error: Syntax error in input(1).
Так что мой вопрос, каковы мои вариантов здесь, учитывая, что я, вероятно, не хочу, чтобы изменить установленный производитель заголовки?
Что такое линия 84? Можете ли вы построить минимальный тестовый сценарий на основе заголовков, о которых идет речь, и разместить его здесь? –
Хорошо, попробуй. – laslowh
Хорошо, код выше теперь представляет собой полный тестовый пример. – laslowh