可能重复:
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更完整。
答案 0 :(得分:1)
查看__cplusplus
在C ++ 0x中,宏__cplusplus将被设置为不同的值 来自(大于)当前的199711L。
http://predef.sf.net有一些检测特定标准的值。
您所关联问题的Boost.Config recommendation也是一个很好的建议,并提供了更细粒度的答案。我认为它基本上编纂了一个feature matrix并定期更新它。
答案 1 :(得分:1)
要按照我希望的方向跳起来,这里有一些我从g++ bug report收集的有用信息。
__cplusplus
是1
。__cplusplus
是199711L
。__cplusplus
是201103L
。