2014-11-14 280 views
1

我正在將項目鏈接到庫。根據庫的版本,某些API和typedef是不同的。C++檢查typedef是否已定義

無法提取庫版本。我希望在編譯時確定這個庫的版本並定義一個相應的預處理器變量。

更確切地說,我會如下

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

的問題是,SIZE_TYPE不是宏但使用typedef定義的類型喜歡的東西。 我該怎麼辦?

+0

什麼樣的變量你希望size_type是? – 2014-11-14 22:47:45

回答

3

在定義typedef的位置使用伴隨的宏。

typedef size_t size_type ; 
#define size_type_defined 

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

您需要額外寫一行,但只寫一次。

+0

typedef是在庫中定義的,我不能修改庫代碼。因此我需要我的項目中的所有檢查代碼。 – 2014-11-14 23:00:08

+2

@MarcoAgnese Lib必須(應該)定義一些宏是什麼版本。使用它。 – 2501 2014-11-14 23:11:08