【发布时间】:2011-08-20 14:58:54
【问题描述】:
可能重复:
How to determine the version of the C++ standard used by the compiler?
您的程序有没有办法在编译时确定这一点?有可以使用的预处理器宏吗?
我知道 g++ 有这个nice matrix of c++0x/c++11 feature support。这对于其他流行的编译器是否存在?是否有任何标准(事实上或其他)方法可以使用预处理器来测试给定特征的存在?
有一个关于这个的问题,但答案似乎不是很完整:How to determine the version of the C++ standard used by the compiler?
我知道 Boost.Config 可以做到这一点,但它是如何做到的呢?很高兴知道我是否出于某种原因不想使用 Boost。
我将其作为副本关闭,因为有人编辑了 answers in the original question 之一以使其更加完整。
【问题讨论】:
-
@Bo Persson - 我很想自己删除这个问题。这个问题没有特别有用的答案。哎呀,我在 g++ 错误报告中找到了比那个问题更有用的答案。也没有人在这里为任何体面的答案而烦恼。
-
@Omnifarious - 我添加了一个特征矩阵的链接,类似于 boost.config 中使用的一个 boost。
-
我认为没有任何语言标准答案,只有编译器手册记录了 C++11 支持的数量。委员会特别拒绝了为部分实现使用宏的想法。他们希望编译器实现整个语言!
-
啊哈哈..third time today...
-
@Tomalak - 凭借 C++0x 投票产生的新闻,它很可能不会是最后一个......