Подтвердить что ты не робот

Включение С++ 14 в clang в Visual Studio

Я установил clang 3.7, и я использую его с визуальной студией. Когда я пытаюсь скомпилировать:

auto f()
{
return 2;
}

Я получаю сообщение о том, что это будущее от С++ 14. Я пробовал пройти:
-std = С++ 14 как аргументы компилятора, но затем я получаю ошибку:

Ошибка 1: неизвестный аргумент: '-std = С++ 14' C:\Users...\visual studio 2013\Projects\ConsoleApplication8\ConsoleApplication8\clang-cl.exe ConsoleApplication8.

Любые идеи о том, как включить функции С++ 14 в clang в Visual Studio 2013?

Edit:
Я должен добавить, что я могу скомпилировать и построить код С++ 11 с этим компилятором в Visual Studio без проблем.

4b9b3361

Ответ 1

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 option processing

И так казалось бы, что вы бы выбрали clang-cl -Xclang -std=c++14. Лучше всего.

Ответ 2

Я работаю над clang-cl. Как говорит антидух, clang-cl пытается имитировать Visual Studio cl. cl до и включая С++ 14 не было переключателя для включения языковых режимов, он всегда включал все последние вещи. Следовательно, clang-cl тоже. MSVC получил поддержку С++ 14 в MSVC 2015, поэтому, если вы скажете clang-cl, что вы хотите, чтобы он эмулировал MSVC 2015 или более поздней версии, он автоматически включит С++ 14. clang-cl по умолчанию эмулирует версию MSVC, найденную в вашей системе. Вы можете явно передать -fmsc-version=1900, чтобы заставить эмуляцию 2015, которая затем неявно включает С++ 14.

Начиная с MSVC 2017, cl.exe поддерживает /std: флаг, поэтому clang-cl также поддерживает это. Его можно использовать для включения С++ 14 (самого низкого уровня), С++ 17, С++ 20 или самой новой версии.

Флаги -Xclang являются внутренними флагами и не считаются стабильным интерфейсом. Поэтому не используйте их.