我试图用-std = c ++ 14,-std = c ++ 1z,-std = c ++ 1y设置clang-cl参数。他们不工作。我正在使用clang 3.7 pre-build for windows x64和VS 2015。
答案 0 :(得分:5)
下面链接的Clang页面声明-std=c++11
,-std=c++14
以及-std=c++1z
都是支持的命令。现在考虑clang-cl
,就我所知,clang --driver-mode=cl
旨在模仿MSVC cl.exe
。我不明白为什么这会消除对c ++标准等平台无关功能的支持。
http://clang.llvm.org/cxx_status.html
编辑:在同一主题的另一篇文章中,有人提到,为了在clang-cl
模式下将参数传递给clang,你必须使用:
-Xclang <arg> Pass <arg> to the clang compiler
答案 1 :(得分:0)
我不相信-std=c++14
应该有效。 Clang-cl是clang的一个独立驱动程序(不是单独的,因为它只是一个clang的重命名),它支持MSVC参数而不是GCC参数。
可以找到支持的所有受支持命令行参数的概述here,它不包含此标记。
根据我的理解,clang-cl接管了MSVC支持的C ++特性,而不是使用标准(+ MSVC不支持的一些扩展)。这一点尤其重要,因为MSVC(2015年之前)没有区分标准,例如MSVC 2013包含来自c ++ 11,c ++ 14和c ++ 17的功能,而其他功能来自这些相同的标准ain&#39 ;支持或无法正常工作。
因此,为了能够支持MSVC的编译,clang不能在不破坏编译的情况下支持-std=c++11
标志。 (虽然它可能是你想要的)
那就是MSVC 2015 supports /std:c++14,所以也应该支持clang-cl。 (听起来像是一个错误/功能请求)