C++11 windows makefile中的cl选项是否接受-std=c++;11旗?

C++11 windows makefile中的cl选项是否接受-std=c++;11旗?,c++11,makefile,visual-studio-2017,C++11,Makefile,Visual Studio 2017,我已经在windows中编写了示例Makefile,它使用visual studio 2017中的cl选项。它会导致如下警告 cl:命令行警告D9002:忽略未知选项'-std=c++11' 按照以下步骤重现问题 打开VS2017的开发人员命令提示符 编写任何简单的C++代码并编译使用,然后可以看到警告 cl.cpp/std=c++11 这是否意味着VS2017在默认情况下将支持c++11,所以cl选项忽略c++11标志(或者)是否还有其他东西可以通过cl.exe发出警告 有人能澄清一下这个问

我已经在windows中编写了示例Makefile,它使用visual studio 2017中的cl选项。它会导致如下警告 cl:命令行警告D9002:忽略未知选项'-std=c++11'

按照以下步骤重现问题

  • 打开VS2017的开发人员命令提示符
  • 编写任何简单的C++代码并编译使用,然后可以看到警告
  • cl.cpp/std=c++11
    
    这是否意味着VS2017在默认情况下将支持c++11,所以cl选项忽略c++11标志(或者)是否还有其他东西可以通过cl.exe发出警告

    有人能澄清一下这个问题吗

    谢谢

    哈里参见
    cl
    仅接受选项
    /std:c++14
    /std:c++17
    /std:c++latest


    默认情况下已启用C++11功能。

    检查MSVC 2017的
    cl.exe/?
    输出,我发现:

    /std:<c++14|c++17|c++latest> C++ standard version
        c++14 – ISO/IEC 14882:2014 (default)
        c++17 – ISO/IEC 14882:2017
        c++latest – latest draft standard (feature set subject to change)
    
    <代码> /STD: C++标准版 c++14–ISO/IEC 14882:2014(默认) c++17–ISO/IEC 14882:2017 c++最新版本–最新标准草案(功能集可能会更改) 看来:

    • 对于严格的C++11兼容性,没有开关
    • 正确的语法是
      /std:…
      ,而不是
      -std=…
    /std:<c++14|c++17|c++latest> C++ standard version
        c++14 – ISO/IEC 14882:2014 (default)
        c++17 – ISO/IEC 14882:2017
        c++latest – latest draft standard (feature set subject to change)