2014-11-14 3 views
1

Я связываю проект с библиотекой. В зависимости от версии библиотеки некоторые API и typedef отличаются.C++ проверить, если typedef, если определено

Невозможно извлечь библиотечную версию. Во время компиляции я хотел бы определить версию этой библиотеки и определить соответствующую переменную препроцессора.

Точнее, я хотел бы что-то в следующем

#ifdef size_type 
#define LIBRARY_VERSION 1.0 
#else 
#define LIBRARY_VERSION 2.0 
#endif 

Проблема заключается в том, что size_type не макрос, но тип, определенный с помощью ЬурейеЕ. Как я могу это сделать?

+0

Какой тип, если переменная, вы хотите, чтобы size_type был? –

ответ

3

Используйте макрос сопутствующего макроса в том месте, где определен typedef.

typedef size_t size_type ; 
#define size_type_defined 

#ifdef size_type_defined 
#define LIBRARY_VERSION 1.0 
#else 
... 

Вам нужно будет написать дополнительную строку, но только один раз.

+0

typedef определяется внутри библиотеки, и я не могу изменить код библиотеки. Поэтому мне нужен код проверки внутри моего проекта. –

+2

@MarcoAgnese Lib должен (должен) определить какой-то макрос относительно какой версии он. Используйте это. – 2501