Je souhaite utiliser les fonctionnalités de C ++ 17.
Comment puis-je passer de la compilation de C ++ 14 à C ++ 17 dans Microsoft Visual Studio?
Ou ce n'est pas disponible dans les versions de version de VS?
c++
visual-studio
compilation
c++17
Tudvari
la source
la source
c++11
etc++14
?Réponses:
Il existe maintenant une liste déroulante (au moins depuis VS 2017.3.5) où vous pouvez sélectionner spécifiquement C ++ 17. Les options disponibles sont (sous projet> Propriétés> C / C ++> Langage> Standard du langage C ++)
/std:c++14
/std:c++17
/std:c++latest
(Je parie qu'une fois C ++ 20 sorti et plus entièrement pris en charge par Visual Studio, il le sera
/std:c++20
)la source
-std:c++14
,-std:c++17
et-std:c++latest
fonctionne également, par exemple lorsque vous préférez saisir manuellement les options compilateur (testé avec VS2017).-
au lieu des/std:
commutateurs que je liste?gcc
ouclang
. Ensuite, le-
est moins intrusif (cependant la syntaxe diffère encore légèrement (:
au lieu de=
)).MSBuild (projet / solution Visual Studio * .vcproj / *. Sln ) :
Ajouter aux options supplémentaires dans les paramètres du projet:
/std:c++latest
pour activer les dernières fonctionnalités - actuellement C ++ 17 à partir de VS2017, VS2015 Update 3.https://blogs.msdn.microsoft.com/vcblog/2016/06/07/standards-version-switches-in-the-compiler/
/permissive-
désactivera les extensions C ++ non standard et activera la conformité standard dans VS2017.https://blogs.msdn.microsoft.com/vcblog/2016/11/16/permissive-switch/
EDIT (octobre 2018): Les dernières fonctionnalités de VS2017 sont documentées ici:
https://docs.microsoft.com/en-gb/cpp/build/reference/std-specify-language-standard-version
VS2017 prend en charge:
/std:[c++14|c++17|c++latest]
maintenant. Ces indicateurs peuvent être définis via les pages de propriétés du projet:CMake :
Visual Studio 2017 (15.7+) prend en charge les projets CMake. CMake permet d'activer les fonctionnalités C ++ modernes de différentes manières. L'option la plus basique consiste à activer une norme C ++ moderne en définissant la propriété d'une cible dans CMakeLists.txt:
Dans le cas d'une bibliothèque d'interface:
la source
Visual Studio 2015 Update 3 ne prend pas en charge la fonctionnalité C ++ 17 que vous recherchez (
emplace_back()
renvoyant une référence).Prise en charge des fonctionnalités C ++ 11/14/17 (C ++ moderne)
Fonctionnalités C ++ 11/14/17 dans VS 2015 RTM
La STL de VS 2015 Update 2 est une fonctionnalité C ++ 17 jusqu'à présent terminée
Mise à jour 3 de Visual Studio 2015
Correctifs STL dans VS 2015 Update 3
la source
Si vous apportez la solution Visual Studio 2015 existante dans Visual Studio 2017 et que vous souhaitez la générer avec le compilateur natif c ++ 17, vous devez d'abord recibler la solution / les projets vers la v141, ALORS la liste déroulante apparaîtra comme décrit ci-dessus (Propriétés de configuration -> C / C ++ -> Language -> Language Standard)
la source
Version Visual Studio 2019:
Le menu déroulant a été déplacé vers:
la source