【问题标题】:C++11 feature checkingC++11 特征检查
【发布时间】:2012-04-30 19:30:08
【问题描述】:

如何检查单个 C++0x/C++11 语言功能是否存在?我知道 Clang 有一个很好的系统。 GCC、Visual Studio 或 Boost 呢?我想一种方法是检测编译器版本并将其与该版本中引入的功能相关联。但这很麻烦。有人已经这样做了吗?

【问题讨论】:

  • 直截了当的答案是编写具有该功能的代码并进行编译。
  • 为什么要结束这个问题?
  • @Nordlöw :有两个人投票决定将其作为this question 的副本关闭。

标签: c++ c++11 language-features compiler-specific


【解决方案1】:

boost config 附带一个脚本,用于检查某些但不是所有 C++11 功能。

它会为每个功能生成一个包含宏的配置文件。

【讨论】:

  • 我想你的意思是在 See: 之后写一些东西。无论如何,是的,Boost.Config 可能是最好的选择。 Boost 人员已经追踪了这些信息,因此不必这样做:他们让编译器团队准确地知道它何时足够稳定可以被宣传,或者在 Clang 的情况下请求新的检查标志。
  • 实际上它是草稿答案的剩余部分。我会删除它。谢谢。
【解决方案2】:

您的构建工具可能会对此有所帮助。

CMake 有try_compile 命令,可让您测试代码示例是否会编译并根据编译结果设置变量。

目前我一直在使用更常用的支持功能,例如auto 打字。

您可以经常使用 Boost 来替换缺少的库功能,这可能是几年内更新编译器和库并修复错误的最佳选择。

GCC 的 C++11 功能兼容性列表在这里:http://gcc.gnu.org/projects/cxx0x.html

注意警告:

重要提示:GCC 对 C++11 的支持仍处于试验阶段。一些功能是根据早期提案实现的,当它们更新以匹配最终的 C++11 标准时,不会尝试保持向后兼容性。

【讨论】:

    猜你喜欢
    • 2023-04-04
    • 2020-11-23
    • 2011-07-11
    • 1970-01-01
    • 2020-12-22
    • 2019-12-04
    • 1970-01-01
    • 2010-11-01
    相关资源
    最近更新 更多