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?
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?
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
)
-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 komme clang
. 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:
So legen Sie diese Compileroption in der Visual Studio-Entwicklungsumgebung fest
- Öffnen Sie das Dialogfeld Eigenschaftenseiten des Projekts. Weitere Informationen finden Sie unter Arbeiten mit Projekteigenschaften.
- Wählen Sie Konfigurationseigenschaften, C / C ++, Sprache.
- Wählen Sie in C ++ Language Standard den zu unterstützenden Sprachstandard aus dem Dropdown-Steuerelement aus und wählen Sie dann OK oder Übernehmen, um Ihre Änderungen zu speichern.
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:
add_library (${PROJECT_NAME})
set_property (TARGET ${PROJECT_NAME}
PROPERTY
# Enable C++17 standard compliance
CXX_STANDARD 17
)
Im Fall einer Schnittstellenbibliothek:
add_library (${PROJECT_NAME} INTERFACE)
target_compile_features (${PROJECT_NAME}
INTERFACE
# Enable C++17 standard compliance
cxx_std_17
)
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
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)
Visual Studio 2019 Version:
Das Dropdown-Menü wurde verschoben zu:
c++11
undc++14
?