Следующий модуль не может быть обработан SWIG с сообщением об ошибке «example.i: 2: Ошибка: ошибка синтаксиса на входе (1)»ГЛОТОК ошибка синтаксиса при определении BOOL
%module example
typedef unsigned char bool;
bool isEven(int number);
При изменении bool
к boll
все работает нормально. Кажется, что SWIG обрабатывает bool как встроенный тип в C. Однако только _Bool является встроенным типом в C99, а bool не определяется, если не включает в себя
У меня есть большой интерфейс, который мне нужно обернуть для java, который содержит следующие ЬурейеЕ:
#ifndef __cplusplus
typedef unsigned char bool;
#endif
я мог обойти проблемы, добавив
#define __cplusplus
в мой файл модуля SWIG перед включением заголовка, определяющего интерфейс. Однако в этом случае в том числе cpointer.i не работает больше (Ошибка: Отсутствует идентификатор #ifdef, который происходит для каждой строки, содержащей cpointer.i #ifdef __cplusplus
)
Любые предложения о том, как я могу использовать свой заголовочный файл интерфейса без изменения это (т.е. без удаления моего bool typedef) и все еще можно использовать cpointer.i?
кажется, что имя BOOL является уже определен. Например, это может быть макрос. Поэтому вам нужно проверить, что такое bool. Вместо bla ... bla..bla .. вы должны показать сообщение об ошибке. –
Я ничего не включаю, поэтому нет кода, который может определять имя bool. Когда я запускаю SWIG на example.i, который содержит только 3 строки сверху, я получаю «example.i: 2: Ошибка: ошибка синтаксиса во вводе (1)». – sun