Как я использую FTGLC API из кода C ++ в Visual Studio 2010?
FTGL использует #ifdef __cplusplus
проверки экспортировать API C и C ++ из одних и тех же заголовочных файлов.
Я попробовал это:
#ifdef __cplusplus
#undef __cplusplus
#include <FTGL/ftgl.h>
#define __cplusplus
#else
#include <FTGL/ftgl.h>
#endif
Но VS2010 не имеет этого:
warning C4117: macro name '__cplusplus' is reserved, '#undef' ignored
warning C4117: macro name '__cplusplus' is reserved, '#define' ignored
Как использовать C API FTGL из кода C ++ в Visual Studio 2010?
Вы не
Создатели FTGL явно не хотят, чтобы пользователи C ++ использовали C API. Таким образом, они не позволяют им.
__cplusplus
макрос является частью языка C ++; Это не могу быть неопределенным. Или определяется. Или переопределено. И так как это то, от чего FTGL пользуется ключом, нет способа обмануть его.
Единственный способ избежать этого — редактировать сам FTGL.
Макрос __cplusplus
является зарезервированным макросом и должен быть определяется автоматически вашим компилятором, если вы компилируете как код C ++ (и не определен иначе). Вы не должны должны #define
это вручную, и именно поэтому ваш компилятор выдает ошибку.