我正在將項目鏈接到庫。根據庫的版本,某些API和typedef是不同的。C++檢查typedef是否已定義
無法提取庫版本。我希望在編譯時確定這個庫的版本並定義一個相應的預處理器變量。
更確切地說,我會如下
#ifdef size_type
#define LIBRARY_VERSION 1.0
#else
#define LIBRARY_VERSION 2.0
#endif
的問題是,SIZE_TYPE不是宏但使用typedef定義的類型喜歡的東西。 我該怎麼辦?
我正在將項目鏈接到庫。根據庫的版本,某些API和typedef是不同的。C++檢查typedef是否已定義
無法提取庫版本。我希望在編譯時確定這個庫的版本並定義一個相應的預處理器變量。
更確切地說,我會如下
#ifdef size_type
#define LIBRARY_VERSION 1.0
#else
#define LIBRARY_VERSION 2.0
#endif
的問題是,SIZE_TYPE不是宏但使用typedef定義的類型喜歡的東西。 我該怎麼辦?
在定義typedef的位置使用伴隨的宏。
typedef size_t size_type ;
#define size_type_defined
#ifdef size_type_defined
#define LIBRARY_VERSION 1.0
#else
...
您需要額外寫一行,但只寫一次。
typedef是在庫中定義的,我不能修改庫代碼。因此我需要我的項目中的所有檢查代碼。 – 2014-11-14 23:00:08
@MarcoAgnese Lib必須(應該)定義一些宏是什麼版本。使用它。 – 2501 2014-11-14 23:11:08
什麼樣的變量你希望size_type是? – 2014-11-14 22:47:45