2014-11-14 229 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