在 Visual Studio 中的 clang 中启用 C++14

Enabling C++14 in clang in Visual Studio

本文关键字:启用 C++14 clang 中的 Visual Studio      更新时间:2023-10-16

我已经安装了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 14下启用c ++ 2013功能?

编辑:
我必须补充一点,我能够在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
  ...

请注意,这些选项类似于Microsoft的cl选项语法,而不是clang的选项语法。

但是,他们有一些直通选项来支持像您这样的情况:

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的clcl包括 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标志是内部标志,不被视为稳定接口。所以不要使用这些。