c++ - 如何检测 VS C++ 编译器是否支持 C++11?

标签 c++ c++11 visual-c++ macros

如何通过预处理器宏检测 Visual Studio (VS) C++ 编译器是否支持 C++11?我尝试使用 __cplusplus(许多人建议用于此类检查的预处理器宏)但它在 VS C++ 2010 编译器中失败(即从未声明函数 get_dimension) :

#if __cplusplus > 199711L
    int get_dimension(int index);
#endif

最佳答案

您可以使用 _MSVC_LANG 查看开箱即用的宏。

__cplusplus 是语言多编译器 象牙塔 类的解决方案,但不幸的是必须在 MSVC 中启用它才能有意义地使用(并且可能不支持非常旧的版本)。这对于使用例如的人来说太棒了。 gcc 默认情况下使用版本设置(大多数人会相信它也适用于 MSVC)。所以只有当你需要支持很多编译器时我才会担心,即使那样我也会考虑为一些编译器添加特殊检查,即 MSVC

C++ team blog

关于c++ - 如何检测 VS C++ 编译器是否支持 C++11?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62574732/

相关文章:

c++ - 函数结束后子节点的树递归c++缺失值

c++ - 如何确定C++函数调用顺序?

C++ 在模板编译器错误中使用模板

c++ - 我如何告诉 clang-format 缩进可见性修饰符?

c++ - 这些函数进行了哪些系统调用?

c++ - 将二进制转换为 ASCII

c++ - 编译模板方面对 char、signed char 或 unsigned char 参数类型的函数重载

c++ - 对于构造函数,{} 是否与 =default 相同?

c++ - 我可以从 Windows SEH 异常中解码 C++ 异常吗? (如果是这样,怎么做?)

c - 从 DLL 调用后静态库全局值被重置