我已经安装了clang 3.7并且我正在使用visual studio。当我尝试编译时:
auto f()
{
return 2;
}
我收到错误,说这是C ++ 14的未来。我试图通过:
-std = c ++ 14作为编译器参数,但后来我收到错误:
错误1错误:未知参数:' - std = c ++ 14' C:\ Users ... \ visual studio 2013 \ Projects \ ConsoleApplication8 \ ConsoleApplication8 \ clang-cl.exe ConsoleApplication8。
有关在Visual Studio 2013下如何在clang中启用c ++ 14功能的任何想法?
编辑:
我必须补充一点,我能够在Visual Studio下使用这个编译器编译和构建c ++ 11代码,没有任何问题。
clang-cl
不使用与传统clang相同的选项语法 - 它应该模仿Visual Studio cl
命令行,不是 clang
的命令行。
例如,来自 clang-cl
的 文件:
CL.EXE COMPATIBILITY OPTIONS:
/? Display available options
/arch:<value> Set architecture for code generation
/C Don't discard comments when preprocessing
/c Compile only
/D <macro[=value]> Define macro
...
但是,他们有一些传递选项来支持像你这样的案例:
OPTIONS:
...
-Xclang <arg> Pass <arg> to the clang compiler
-mllvm <value> Additional arguments to forward to LLVM's option processing
所以它似乎在调用 clang-cl -Xclang -std=c++14
这将是你最好的选择。
我在clang-cl工作。正如antiduh所说,clang-cl试图模仿Visual Studio cl
。 cl
直到并且包括c ++ 14没有用于启用语言模式的开关,它总是启用所有最新的东西。因此,clang-cl也是如此。 MSVC在MSVC 2015中获得了一些C ++ 14支持,因此如果您告诉clang-cl您希望它模拟MSVC 2015或更高版本,它将自动启用C ++ 14。 clang-cl默认情况下模拟系统上找到的MSVC版本。你可以明确传递 -fmsc-version=1900
强制模仿2015年,这将隐式启用C ++ 14。
从MSVC 2017开始,cl.exe支持一个 /std:
旗所以clang-cl也支持它。它可用于启用C ++ 14(最低级别),C ++ 17,C ++ 20或最新版本。
该 -Xclang
flags是内部标志,不被视为稳定接口。所以不要使用那些。