我已经安装了clang 3.7并且我正在使用visual studio.当我尝试编译时:
auto f()
{
return 2;
}
Run Code Online (Sandbox Code Playgroud)
我收到错误,说这是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代码,没有任何问题.
ant*_*duh 18
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
...
Run Code Online (Sandbox Code Playgroud)
请注意,这些选项类似于Microsoft的cl选项语法,而不是clang选项语法.
但是,他们有一个小的传递选项来支持像你这样的案件:
OPTIONS:
...
-Xclang <arg> Pass <arg> to the clang compiler
-mllvm <value> Additional arguments to forward to LLVM's option processing
Run Code Online (Sandbox Code Playgroud)
所以看起来调用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:flag,因此 clang-cl 也支持。它可用于启用 C++14(最低级别)、C++17、C++20 或最新已知版本。
这些-Xclang标志是内部标志,不被视为稳定的接口。所以不要使用那些。