Windows Makefile中的cl选项是否可以接受-std = c ++ 11标志?

时间:2019-01-17 16:09:41

标签: c++11 makefile visual-studio-2017

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

请按照以下步骤重现该问题。

  1. 针对VS2017的Open Developer Command Prompt
  2. 编写任何简单的c ++代码并使用进行编译,然后我们就可以看到警告了
   cl <filename>.cpp /std=c++11 

这是否意味着VS2017默认情况下将支持c ++ 11,所以cl选项省略了c ++ 11标志(或)是否还有其他东西可以通过cl.exe发出警告?

有人可以澄清这个问题吗?

谢谢

哈里

2 个答案:

答案 0 :(得分:1)

请参见herecl仅接受选项/std:c++14/std:c++17/std:c++latest

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

答案 1 :(得分:1)

检查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)

似乎:

  • 没有用于严格的C ++ 11兼容性的开关。
  • 正确的语法是/std:...,而不是-std=...