Ich möchte C ++ 17-Funktionen verwenden.
Wie kann ich das Kompilieren von C ++ 14 auf C ++ 17 in Microsoft Visual Studio umstellen?
Oder ist es in Release-Versionen von VS nicht verfügbar?
c++
visual-studio
compilation
c++17
Tudvari
quelle
quelle
c++11
undc++14
?Antworten:
Es gibt jetzt eine Dropdown-Liste (mindestens seit VS 2017.3.5), in der Sie speziell C ++ 17 auswählen können. Die verfügbaren Optionen sind (unter Projekt> Eigenschaften> C / C ++> Sprache> C ++ Sprachstandard)
/std:c++14
/std:c++17
/std:c++latest
(Ich wette, sobald C ++ 20 verfügbar ist und von Visual Studio besser unterstützt wird, wird es sein
/std:c++20
)quelle
-std:c++14
,-std:c++17
und-std:c++latest
funktioniert auch, zum Beispiel , wenn Sie es vorziehen , manuell zu Compiler - Optionen eingeben (getestet mit VS2017).-
statt der/std:
Schalter, die ich aufführe?gcc
oder kommeclang
. Dann-
ist das weniger aufdringlich (die Syntax unterscheidet sich jedoch immer noch geringfügig (:
anstelle von=
)).MSBuild (Visual Studio-Projekt / -Lösung * .vcproj / *. Sln ) :
Zu zusätzlichen Optionen in den Projekteinstellungen hinzufügen:
/std:c++latest
Zum Aktivieren der neuesten Funktionen - derzeit C ++ 17 ab VS2017, VS2015 Update 3.https://blogs.msdn.microsoft.com/vcblog/2016/06/07/standards-version-switches-in-the-compiler/
/permissive-
Deaktiviert nicht standardmäßige C ++ - Erweiterungen und aktiviert die Standardkonformität in VS2017.https://blogs.msdn.microsoft.com/vcblog/2016/11/16/permissive-switch/
EDIT (Okt 2018): Die neuesten VS2017-Funktionen sind hier dokumentiert:
https://docs.microsoft.com/en-gb/cpp/build/reference/std-specify-language-standard-version
VS2017 unterstützt:
/std:[c++14|c++17|c++latest]
jetzt. Diese Flags können über die Eigenschaftenseiten des Projekts gesetzt werden:CMake :
Visual Studio 2017 (15.7+) unterstützt CMake-Projekte. CMake ermöglicht es, moderne C ++ - Funktionen auf verschiedene Arten zu aktivieren. Die einfachste Option besteht darin, einen modernen C ++ - Standard zu aktivieren, indem die Eigenschaft eines Ziels in CMakeLists.txt festgelegt wird:
Im Fall einer Schnittstellenbibliothek:
quelle
Visual Studio 2015 Update 3 unterstützt die von Ihnen gesuchte C ++ 17-Funktion nicht (
emplace_back()
Rückgabe einer Referenz).Unterstützung für C ++ 11/14/17 Funktionen (Modern C ++)
C ++ 11/14/17 Funktionen In VS 2015 RTM
Die STL von VS 2015 Update 2 ist C ++ 17-bisher abgeschlossen
Visual Studio 2015 Update 3
STL-Korrekturen in VS 2015 Update 3
quelle
Wenn Sie eine vorhandene Visual Studio 2015-Lösung in Visual Studio 2017 einbinden und diese mit dem nativen C ++ 17-Compiler erstellen möchten, sollten Sie zuerst die Lösung / Projekte auf v141 neu ausrichten. DANN wird die Dropdown-Liste wie oben beschrieben angezeigt (Konfigurationseigenschaften -> C. / C ++ -> Sprache -> Sprachstandard)
quelle
Visual Studio 2019 Version:
Das Dropdown-Menü wurde verschoben zu:
quelle