【问题标题】:C++ check if typedef if defined [duplicate]C ++检查是否定义了typedef [重复]
【发布时间】:2014-11-14 22:46:09
【问题描述】:

我正在将一个项目链接到一个库。根据库的版本,一些 API 和 typedef 是不同的。

没有办法提取库版本。我想在编译时确定这个库的版本并定义一个相应的预处理器变量。

更准确地说,我想要以下内容

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

问题在于 size_type 不是宏,而是使用 typedef 定义的类型。 我该怎么做?

【问题讨论】:

  • 如果变量你希望 size_type 是什么类型的?

标签: c++ compilation typedef preprocessor-directive


【解决方案1】:

在定义 typedef 的位置使用附带的宏。

typedef size_t size_type ;
#define size_type_defined

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

你需要多写一行,但只需要写一次。

【讨论】:

  • typedef 是在库内部定义的,我无法修改库代码。因此,我需要项目中的所有检查代码。
  • @MarcoAgnese Lib 必须(应该)定义一些宏来说明它是什么版本。使用它。
猜你喜欢
  • 2013-01-31
  • 1970-01-01
  • 2013-10-15
  • 2022-09-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-03
  • 2010-09-22
相关资源
最近更新 更多