检查C ++ 0x算法添加的可用性

时间:2011-05-23 10:21:27

标签: c++ macros c++11 conditional-compilation

我试图弄清楚给定实现支持哪些算法标题的添加(gcc和MSVC就足够了)。

简单的方法是以与核心功能相同的方式执行此操作:检查编译器版本并在支持语言功能时定义宏。不幸的是,我找不到显示任一编译器版本号的列表。

只是简单地检查通用C ++ 0x宏(GXX_EXPERIMENTAL或__cplusplus),还是应该检查编译器的更改列表并根据这些列表构建我的宏?

http://gcc.gnu.org/onlinedocs/libstdc++/manual/status.html#status.iso.200x

2 个答案:

答案 0 :(得分:2)

由于所有编译器供应商都提供了一个很好的列表,列出了什么版本中可用的内容,并且您无论如何都要测试功能,我会使用编译器版本来检查特定功能。或者要求用户使用至少一个好的版本,而不用担心它。

__cplusplus不一定是C ++ 0x宏,它什么都不告诉你。自{GCC 4.3}以来GXX_EXPERIMENTAL已经存在,所以这也没用。

Here您可以找到针对特定版本的编译器检查的宏。

答案 1 :(得分:0)

据我所知,唯一合适的解决方案是使用构建脚本尝试编译并运行使用该功能并具有运行时断言的文件。根据结果​​,配置文件中包含#define CONFIG_NO_FEATURENAME或类似内容,并使用#ifndef保护您的使用和解决方法。

这样就可以检查是否

  1. 该功能可用
  2. 功能正常运行(取决于断言的正确性)