Chúng tôi có một nhà cung cấp đã cung cấp cho chúng tôi thư viện và tiêu đề C++, rằng tôi đang cố gắng bọc bằng SWIG. Dường như họ đang bị quá thông minh bằng một nửa với các chỉ thị tiền xử lý:Lỗi SWIG vì chỉ thị tiền xử lý
// top.h
#define DECLARE_WITH_COMMA(a) a,
và sau đó
// foo.h
#include "top.h"
#define MY_TYPES(d) \
d(One) \
d(Two) \
d(Three) \
NumElems
enum MyTypes {
MY_TYPES(DECLARE_WITH_COMMA)
};
Đó là tất cả một cách longwinded nói rằng khi tôi cố gắng chạy SWIG (phiên bản 2.0 .4) về "foo.h", tôi nhận được:
foo.h:12: Error: Syntax error in input(1).
Vì vậy, câu hỏi của tôi là các tùy chọn của tôi ở đây, có thể tôi không muốn thay đổi tiêu đề do nhà cung cấp cung cấp?
Đường 84 nào? Bạn có thể xây dựng một trường hợp thử nghiệm tối thiểu dựa trên các tiêu đề được đề cập và đăng nó ở đây không? –
Ý tưởng hay, sẽ thử. – laslowh
Ok, mã ở trên bây giờ là một trường hợp thử nghiệm hoàn chỉnh. – laslowh