【问题标题】:__cplusplus is equal to 199711 in MSVC, does it support C++11? [duplicate]__cplusplus 在 MSVC 中等于 199711,是否支持 C++11? [复制]
【发布时间】:2016-05-28 19:26:37
【问题描述】:

我想知道我的编译器是否支持 C++11,当使用 const __cplusplus 了解 C++ 版本时,我发现打印出 199711

这个版本号是否意味着编译器支持C++11?
注意:我使用的是Visual Studio 2013 v12.0.40629 Update5

【问题讨论】:

  • 不是链接问题的欺骗。可能是 stackoverflow.com/q/14131454/1639256 的骗子。
  • 如果您检查是否存在特定语言功能,而不是坚持遵守整个规范,您将获得更大的成功。 MSVC 还没有实现完整的 C++11,所以他们不能(不应该)提升 __cplusplus 的版本。
  • /agree Oktalist & @CodyGray - 这正是我链接github.com/sloede/cxx11tests & msdn.microsoft.com/pl-pl/library/hh567368.aspx 的原因; IMO C++11仍然如此广泛和新颖,以至于许多 C/C++ 平台(包括 uC/嵌入式)不太可能永远完全支持它。

标签: c++ c++11 visual-c++


【解决方案1】:

这是 MSVC 的一个问题(即它缺乏 C++11/C++14 支持):

https://connect.microsoft.com/VisualStudio/feedback/details/763051/a-value-of-predefined-macro-cplusplus-is-still-199711l

所以不,就 MSVC 而言,这个值并不意味着任何特定的东西。一些 C++11 特性可以完美运行,一些会失败。正因为如此,这个 C++99-ish 值有一定的意义;最好的办法是检查特定功能(请参阅下面的cxx11tests 链接)。

更多信息:

C++11 on Windows

https://msdn.microsoft.com/pl-pl/library/hh567368.aspx

https://stackoverflow.com/a/27459246/719662

How to Detect if I'm Compiling Code With Visual Studio 2008?

https://github.com/sloede/cxx11tests

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-05-02
    • 2018-10-17
    • 2013-10-15
    • 2023-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-11
    相关资源
    最近更新 更多