Nouveautés de C++ dans Visual Studio 2022
Visual Studio 2022 apporte de nombreuses mises à jour et corrections au compilateur et aux outils Microsoft C++. L'IDE Visual Studio offre également des améliorations significatives en matière de performances et de productivité, et s'exécute désormais en mode natif en tant qu'application 64 bits.
- Pour plus d'informations sur l'ensemble des nouveautés de Visual Studio, visitez Nouveautés de Visual Studio 2022.
- Pour plus d'informations sur les nouveautés de la documentation de C++, consultez Documents Microsoft C++ : Nouveautés.
- Pour plus d'informations sur les dates de build des versions, voir l'historique des versions de Visual Studio 2022.
Nouveautés de C++ dans Visual Studio version 17.13
Publié : Février 2025
Pour plus d'informations sur | Consultez |
---|---|
Nouveautés pour les développeurs C++ | Nouveautés pour les développeurs C++ dans Visual Studio 2022 17.13 |
Fonctionnalités de la bibliothèque standard (STL) fusionnées C++26 et C++23, résolutions de problèmes LWG, améliorations des performances, comportements améliorés et bogues corrigés. | Journal des modifications de STL 17.13 |
Nouvelles fonctionnalités dans l’IDE | notes de publication Visual Studio 2022 version 17.13 |
Mises à jour du langage C++ | mises à jour du compilateur MSVC dans Visual Studio 2022 17.13 |
Améliorations de la conformité du langage C++ | améliorations de conformité C++, modifications de comportement et correctifs de bogues dans Visual Studio 2022 17.13 |
Voici un aperçu rapide de certaines des nouvelles fonctionnalités :
améliorations du langage C++
Essayez les fonctionnalités de préversion C++23 en définissant la norme de langage C++ sur
/std:c++23preview
. Ce paramètre active les dernières fonctionnalités et correctifs de bogues C++23. Pour plus d’informations, consultez /std (Spécifier la version standard du langage).Ajout de la prise en charge du suffixe littéral
size_t
de C++23, qui permet d'éviter les troncatures ou les erreurs de comparaison signées, en particulier lors de l'écriture de boucles. Par exemple :// Infinite loop if v.size > max unsigned int for (auto i = 0u; i < v.size(); ++i) { ... } // Fixed because of uz literal for (auto i = 0uz; i < v.size(); ++i) { ... }
Prise en charge des longueurs vectorielles pour la génération de code sur x86 et x64. Pour plus d'informations, voir /vlen.
Prise en charge d'Intel Advanced Vector Extensions 10 version 1. Pour plus d’informations sur
/arch:AVX10.1
, consultez /arch (x64).
améliorations apportées à la bibliothèque standard
Prise en charge des couroutines par la bibliothèque standard. Dans cet exemple de P2502R2, la fonction
fib
est une coroutine. Lorsque l’instructionco_yield
est exécutée,fib
est suspendue et la valeur est retournée à l’appelant. Vous pouvez reprendre la coroutinefib
plus tard pour générer davantage de valeurs sans nécessiter de gestion manuelle de l’état.std::generator<int> fib() { auto a = 0, b = 1; while (true) { co_yield std::exchange(a, std::exchange(b, a + b)); } } int answer_to_the_universe() { auto rng = fib() | std::views::drop(6) | std::views::take(3); return std::ranges::fold_left(std::move(range), 0, std::plus{}); }
Déplacé
system_clock
,high_resolution_clock
etchrono_literals
d’un en-tête interne couramment inclus vers<chrono>
. Si vous voyez des erreurs de compilateur indiquant que des types commesystem_clock
ou des littéraux définis par l'utilisateur tels que1729ms
ne sont pas reconnus, veuillez inclure<chrono>
.Amélioration des implémentations vectorisées des constructeurs de
bitset
à partir de chaînes, debasic_string::find_last_of()
, deremove()
, deranges::remove
et des familles d’algorithmesminmax_element()
etminmax()
.Ajout d’implémentations vectorisées de :
find_end()
etranges::find_end
pour les éléments de 1 octet et 2 octets.-
basic_string::find()
etbasic_string::rfind()
pour une sous-chaîne. -
basic_string::rfind()
pour un seul caractère.
rapports de défauts C++23 fusionnés
GitHub Copilot
GitHub Copilot Free est désormais disponible. Obtenez 2 000 saisies de code et 50 demandes de conversation par mois sans frais.
Les complétions de code GitHub Copilot fournissent des suggestions d'autocomplétion inline au fur et à mesure que vous codez. Pour améliorer l’expérience des développeurs C++, GitHub Copilot inclut d’autres fichiers pertinents en tant que contexte. Cela réduit les hallucinations tout en offrant des suggestions plus pertinentes et précises.
Vous pouvez maintenant demander une révision de code à partir de GitHub Copilot à partir de la fenêtre Modifications Git :
La fenêtre Git Changes est ouverte avec le bouton GitHub Copilot Review en surbrillance.
GitHub Copilot recherche des problèmes potentiels et crée des commentaires pour eux :
GitHub Copilot a détecté un problème avec la ligne if (is_enabled_) new_site.disable(). Il indique qu'il peut s'agir d'une erreur et qu'il devrait probablement s'agir de if ( is_enabled_) new_site.enable() parce que l'intention semble être d'activer le nouveau site si le point d'arrêt est activé.
Pour utiliser cette fonctionnalité, vérifiez que les éléments suivants sont activés :
- Outils>Options>Fonctionnalités d'aperçu>Commentaires de pull request
- Outils>Options>GitHub>Copilot>Intégration de contrôle de source>Activer les fonctionnalités d'aperçu Git.
GitHub Copilot Edits est une nouvelle fonctionnalité qui peut apporter des modifications sur plusieurs fichiers dans votre projet. Pour démarrer une nouvelle session d'édition, cliquez sur Créer une nouvelle session d’édition en haut de la fenêtre de conversation Copilot GitHub :
Décrivez les modifications que vous souhaitez apporter et Copilot suggérera les modifications pertinentes. Vous pouvez afficher un aperçu des modifications un par un et accepter celles souhaitées ou apporter des corrections :
GitHub Copilot affiche un résumé des modifications qu’il a apportées, comme 1. Créez une sous-classe range_breakpoint dans include/libsdb/breakpoint.hpp » et 2. Implémentez la classe range_breakpoint dans src/breakpoint.cpp. Une option permettant d’accepter les modifications s’affiche.
CMake
- Prend désormais en charge les préréglages CMake v9. Nouvelles expansions de macros dans le champ include d'un preset. Pour plus d’informations, consultez Extension de macro dans la documentation officielle de CMake.
Nouveautés de C++ dans Visual Studio version 17.12
Date de publication : novembre 2024
Pour plus d'informations sur | Consultez |
---|---|
Nouveautés pour les développeurs C++ | Nouveautés pour les développeurs C++ dans Visual Studio 2022 17.12 |
Fonctionnalités de la bibliothèque standard (STL) fusionnées C++26 et C++23, résolutions de problèmes LWG, améliorations des performances, comportements améliorés et bogues corrigés. | Journal des modifications de STL 17.12 |
Nouvelles fonctionnalités de l'IDE Visual Studio 17.12 | Notes de publication de Visual Studio 2022 version 17.12 |
Amélioration de la conformité du langage C++ dans Visual Studio 2022 17.12 | Améliorations de la conformité, changements de comportement et correctifs de bogues de C++ dans Visual Studio 2022 17.12 |
Voici un aperçu rapide de certaines des nouvelles fonctionnalités :
- Améliorations de la bibliothèque standard
- L'implémentation des gammes de formatage C++23 (P2286R8) est terminée. Ajout de formateurs pour les adaptateurs de conteneurs
stack
,queue
etpriority_queue
. - Ajout d'opérateurs d'indices multidimensionnels, qui prennent également en charge
<mdspan>
. Par exemple :print("m[{}, {}]: '{}'; ", i, j, m[i, j])
.
- L'implémentation des gammes de formatage C++23 (P2286R8) est terminée. Ajout de formateurs pour les adaptateurs de conteneurs
- Développement de jeux en C++
- Ouvrir directement les projets Unreal Engine dans Visual Studio sans avoir à générer un fichier de solution Visual Studio enveloppant le projet Unreal Engine. Pour plus d'informations, voir Travailler avec des projets Unreal Engine dans Visual Studio.
- Vous pouvez spécifier les arguments de la ligne de commande à passer lors du débogage directement depuis la barre d'outils. Pour plus d'informations, voir Définir des arguments de ligne de commande pour les projets Unreal Engine.
- Build Aperçus
- Vous pouvez exécuter Build Insights sur les fichiers sélectionnés. Sélectionnez les fichiers souhaités dans l'Explorateur de solutions, cliquez avec le bouton droit de la souris et choisissez Exécuter les aperçus de la construction sur les fichiers sélectionnés :
- Vous pouvez filtrer les aperçus de Build Insights par projet. Cliquez sur le bouton de filtrage dans l'en-tête de la colonne de filtrage et sélectionnez les projets pour lesquels vous souhaitez voir les résultats :
- En cliquant sur l'icône en forme de point d'interrogation dans la fenêtre Build Insights, vous obtiendrez une brève description des onglets de la fenêtre Build Insights, ainsi qu'un lien vers la documentation pour une explication détaillée :
- Vous pouvez exécuter Build Insights sur les fichiers sélectionnés. Sélectionnez les fichiers souhaités dans l'Explorateur de solutions, cliquez avec le bouton droit de la souris et choisissez Exécuter les aperçus de la construction sur les fichiers sélectionnés :
- GitHub Copilot
- Vous pouvez cliquer sur Ask Copilot à côté de la valeur d'une variable pour obtenir des aperçus pilotés par l'IA sur ce qui a conduit à son état actuel. Par exemple, le programme suivant présente une erreur de type « off-by-one » dans sa condition de boucle :
Si vous cliquez sur l’icône Demander à Copilot pour la variableLe code à l'origine de ce problème est le suivant : for (auto it = h.animals_.begin() ; it <= h.animals_.end() ; it++).
it
, elle vous indique pourquoi elle est<NULL>
:Cette erreur se trouve à l'intérieur d'une fonction définie comme int calculate_number_of_cats(const house& h). Le message du Copilot GitHub indique : « La valeur de l'expression it est NULL, ce qui signifie que l'itérateur ne pointe vers aucun élément valide du vecteur animals_ ». Dans le contexte de votre programme, il est censé itérer sur le vecteur animals_ de l'objet house pour compter le nombre d'objets chats. Pourquoi c'est null. D'après les locales et le contexte de la pile d'appels : l'objet maison h a un vecteur animaux_ vide (taille=0). La condition de boucle it <= h.animals_.end() est incorrecte. Elle devrait être it != h.animals_.end(). »
- Vous pouvez cliquer sur Demander au Copilot les erreurs de la liste d'erreurs de Visual Studio pour obtenir de l'aide sur l'erreur et une suggestion de correction. Par exemple :
Si vous cliquez sur Ask Copilot, vous obtiendrez des informations sur l'erreur :L'icône Ask Copilot est en surbrillance à côté d'une erreur indiquant que unique_ptr tente de référencer une fonction supprimée.
Le message de Copilot indique : « L'erreur se produit parce que la boucle for basée sur la plage tentait de copier des objets std::unique_ptr, ce qui n'est pas autorisé puisque std::unique_ptr ne peut pas être copié. Pour résoudre ce problème, j'ai modifié la boucle pour utiliser une référence afin d'éviter de copier les objets std::unique_ptr. De cette façon, la boucle itère sur les références aux objets std::unique_ptr, ce qui est autorisé ».
- Débogage
- Nouveaux visualiseurs de débogage pour
mutex
,recursive_mutex
etmove_iterator
. - Le débogueur affiche désormais les valeurs de retour en ligne :
- Nouveaux visualiseurs de débogage pour
Nouveautés de C++ dans Visual Studio version 17.11
Sortie en août 2024
Pour plus d'informations sur | Consultez |
---|---|
Nouveautés pour les développeurs C++ | Nouveautés pour les développeurs C++ dans Visual Studio 2022 17.11 |
Fonctionnalités de la bibliothèque standard (STL) fusionnées C++26 et C++23, rapports de défauts C++20, résolutions de problèmes LWG, améliorations des performances, comportement amélioré et bogues corrigés. | Journal des modifications de STL 17.11 |
Nouvelles fonctionnalités de l'IDE Visual Studio 17.11 | Notes de publication de Visual Studio 2022 version 17.11 |
Amélioration de la conformité du langage C++ dans Visual Studio 2022 17.11 | Améliorations de la conformité, changements de comportement et correctifs de bogues de C++ dans Visual Studio 2022 17.11 |
Une liste partielle des nouvelles fonctionnalités :
Améliorations de la bibliothèque standard
- L'implémentation de la sortie formatée inclut désormais
std::range_formatter
et des formateurs pourstd::pair
etstd::tuple
. - Ajout de la prise en charge de
std::println()
sans arguments. Ceci imprime une ligne vierge comme proposé dans P3142R0. - Amélioration de la vectorisation pour plusieurs algorithmes, notamment
replace_copy()
,replace_copy_if()
,ranges::replace_copy
,ranges::replace_copy_if
,find_first_of()
etranges::find_first_of
, pour les éléments 8 bits et 16 bits,mismatch()
,ranges::mismatch
,count()
ranges::count
,find()
,ranges::find
,ranges::find_last
etranges::iota
.
- L'implémentation de la sortie formatée inclut désormais
Développement de jeux en C++
- Vous pouvez désormais ajouter des modèles de classe, des modules et des plug-in courants d'Unreal Engine depuis Visual Studio. Pour plus d'informations, voir Ajouter des classes, des modules et des plug-ins Unreal Engine dans Visual Studio.
- La nouvelle barre d'outils Unreal Engine permet d'accéder rapidement aux actions liées à Unreal Engine depuis Visual Studio. La barre d'outils vous permet de vous attacher rapidement aux processus Unreal Engine, d'analyser à nouveau le cache Blueprints, d'accéder rapidement au journal Unreal Engine et d'accéder rapidement à la page de configuration Unreal Engine pour Visual Studio. Pour plus d'informations, voir Barre d'outils Unreal Engine.
- Vous pouvez désormais filtrer les résultats de la trace par projet. De plus, les résultats de chaque ligne affichent le chemin relatif et le nom du fichier au lieu du chemin complet. Le regroupement des résultats dans la vue Fichiers inclus a également été amélioré :
La vue Fichiers inclus comporte une nouvelle colonne pour le projet. La colonne Projet est sélectionnée et les projets tels que (Select All), CompilerIdC, OpenAL, common, etc. sont sélectionnés. Les fichiers inclus sont répertoriés par chemin relatif et par nom de fichier et sont regroupés.
Débogage CMake
- Vous pouvez désormais déboguer vos scripts CMake et vos fichiers
CMakeLists.txt
dans le débogueur Visual Studio pour les projets CMake qui ciblent Linux via Windows Subsystem for Linux (WSL) ou SSH. Pour lancer une session de débogage CMake dans Visual Studio, définissez un point d'arrêt dans votre fichierCMakeLists.txt
, puis accédez à Project>Configure Cache with CMake Debugging.
- Vous pouvez désormais déboguer vos scripts CMake et vos fichiers
GitHub Copilot
- Lorsque vous survolez les symboles dans l'éditeur de code, cliquez sur le bouton Copilot En savoir plus dans la boîte de dialogue Quick Info pour en savoir plus sur un symbole donné :
La fenêtre d'information rapide est affichée au-dessus d'une fonction. Le lien « Tell me more » est mis en évidence.
- GitHub Copilot peut générer des suggestions de nommage pour vos identifiants (variables, méthodes ou classes) en fonction de la manière dont votre identifiant est utilisé et du style de votre code.
La boîte de dialogue Renommer comporte un champ Nouveau nom avec une liste déroulante qui propose les choix suivants : text_color, font_color, display_color, console_color et menu_text_color.
Vous devez disposer d'un abonnement GitHub Copilot actif. Cliquez avec le bouton droit de la souris sur la variable que vous souhaitez renommer et choisissez Renommer (
Ctrl+R
,Ctrl+R
). Sélectionnez l'icône de GitHub Copilot pour générer des suggestions de noms.Débogage
- Les points d'arrêt conditionnels en C++ sont plus rapides.
Amélioration des diagnostics
- Amélioration des diagnostics lors de l'appel de
std::get<T>
sur unstd::tuple
ayant plusieurs instances deT
dans ses arguments de modèle. MSVC avait l'habitude de signaler :
error C2338: static_assert failed: 'duplicate type T in get<T>(tuple)'
.
Maintenant, il le fait :
error C2338: static_assert failed: 'get<T>(tuple<Types...>&) requires T to occur exactly once in Types.(N4971 [tuple.elemm]/5)'
- Amélioration des diagnostics lorsque
std::ranges::to
n'est pas en mesure de construire le résultat demandé. MSVC avait l'habitude de signaler :
error C2338: static_assert failed: 'the program is ill-formed per N4950 [range.utility.conv.to]/2.3'
Maintenant, il le fait :
error C2338: static_assert failed: 'ranges::to requires the result to be constructible from the source range, either by using a suitable constructor, or by inserting each element of the range into the default-constructed object. (N4981 [range.utility.conv.to]/2.1.5)'
- Amélioration des diagnostics lors de l'appel de
Nouveautés de C++ dans Visual Studio version 17.10
Publication : mai 2024
Pour plus d'informations sur | Consultez |
---|---|
Nouveautés pour les développeurs C++ | Nouveautés pour les développeurs C++ dans Visual Studio 2022 17.10 |
Fonctionnalités de la bibliothèque standard (STL) fusionnées C++26 et C++23, rapports de défauts C++20, résolutions de problèmes LWG, améliorations des performances, comportement amélioré et bogues corrigés. | Journal des modifications de STL 17.10 |
Nouvelles fonctionnalités de l'IDE Visual Studio 17.10 | Notes de publication de Visual Studio 2022 version 17.10 |
Amélioration de la conformité du langage C++ dans Visual Studio 2022 17.10 | Améliorations de la conformité, changements de comportement et correctifs de bogues de C++ dans Visual Studio 2022 17.10 |
Une liste partielle des nouvelles fonctionnalités :
- Mise à jour du jeu d'outils MSVC : La version du jeu d'outils MSVC passe de 19.39 à 19.40. Cela peut affecter les projets qui ont des hypothèses de version. Pour plus d'informations sur les conséquences de ce changement sur les projets qui supposent que les versions de MSVC sont toutes 19.3X pour les versions de Visual Studio 2022, voir MSVC Toolset Minor Version Number 14.40 in VS 2022 v17.10.
- Améliorations de la bibliothèque standard : La bibliothèque standard a ajouté la prise en charge du formatage des pointeurs P2510R3, qui aligne l'ensemble des spécificateurs de format pour les pointeurs lors de l'utilisation de
std::format
sur ceux qui existent déjà pour les entiers. Amélioration des implémentations vectorielles destd::min_element
,std::ranges::min
et friends. - Aperçus de build : Fournit désormais des informations sur l'instanciation des modèles. Voir Modèles d'affichage pour les aperçus de build dans Visual Studio ou l'enregistrement Pure Virtual C++ - Modèles d'affichage pour les aperçus de build dans Visual Studio.
- Plug-in Unreal Engine : Une nouvelle fonctionnalité permet au plug-in Unreal Engine de fonctionner en arrière-plan, ce qui réduit les coûts de démarrage. Il s'agit d'une fonctionnalité opt-in qui est activée via Outil>sOptions>Unreal Engine.
- Nouvelles fonctionnalités pour Linux : Voir les nouvelles fonctionnalités de développement Linux dans Visual Studio.
- Cibles CMake : Vous pouvez maintenant épingler des cibles dans la vue des cibles CMake.
- Connection Manager UX : L'expérience utilisateur offre une plus grande fluidité lors de la connexion à des systèmes distants. Pour plus d'informations, voir Améliorations de la convivialité du gestionnaire de connexions de Visual Studio.
- Commentaires sur les requêtes pull : Vous pouvez maintenant voir les commentaires GitHub et Azure DevOps directement dans votre fichier de travail. Activez l'indicateur de fonctionnalité, Commentaires de demande de tirage dans Options>Environnement>fonctionnalités en préversion et consultez la branche de la demande de tirage pour démarrer.
- Contenu généré par l'IA : GitHub Copilot peut désormais rédiger des descriptions de requêtes de pull. Nécessite un abonnement actif à GitHub Copilot. Faites un test en cliquant sur l'icône du stylet brillant Ajouter une description de la demande de tirage générée par IA dans la fenêtre Créer une demande de tirage.
- Aperçu de l'image : En survolant un chemin d'accès à une image, vous obtiendrez un aperçu avec des détails sur la taille de l'image. La taille est limitée à 500 px en largeur et en hauteur.
La souris survole la ligne std::filesystem::path vs_logo_path = « ../images/vs_logo.png ». En dessous apparaît un aperçu du logo de Visual Studio et l'information qu'il a une taille de 251 x 500 pixels et de 13,65 KB.
- Création de points d'arrêt et de points de contrôle : Vous pouvez désormais créer des points d'arrêt conditionnels ou des points d'arrêt directement à partir d'expressions dans le code source à partir du menu contextuel. Cela fonctionne sur les noms et valeurs de propriétés ou de champs provenant d'autos, de locales, de fenêtres de surveillance ou de DataTips.
- Boîte de dialogue Joindre au processus : La fonctionnalité fournie par la boîte de dialogue Attacher à un processus est plus conviviale. Vous pouvez désormais basculer facilement entre les vues d'arborescence et de liste, améliorer l'organisation des processus avec des sections réductibles et sélectionner des types de code avec une zone de liste modifiable simplifiée. En outre, la fonctionnalité « Sélectionner/suivre une fenêtre » est désormais plus facile à utiliser et permet un suivi dans les deux sens : la sélection d'un processus met en évidence sa fenêtre, et un clic sur une fenêtre sélectionne son processus.
- Intégration de GitHub Copilot : Les extensions GitHub Copilot et Copilot Chat sont désormais unifiées et livrées directement dans Visual Studio. Pour l'installer, installez le composant GitHub Copilot dans le programme d'installation de Visual Studio :
L'interface GitHub Copilot se trouve dans le coin supérieur droit de Visual Studio. Pour l'utiliser, vous devez disposer d'un abonnement GitHub Copilot actif.
Le bouton GitHub Copilot est affiché dans le coin supérieur droit de Visual Studio. Il comporte des options permettant d'ouvrir une fenêtre de discussion, de définir les paramètres de GitHub Copilot, d'en savoir plus et de gérer l'abonnement au Copilot.
Nouveautés de C++ dans Visual Studio version 17.9
Publication: février 2024
Pour plus d'informations sur | Consultez |
---|---|
Nouveautés pour les développeurs C++ | Nouveautés pour les développeurs C++ dans Visual Studio 2022 17.9 |
Bibliothèque standard (STL) fonctionnalités C++23 fusionnées, améliorations des performances, comportement amélioré, résolutions de problèmes LWG et bogues corrigés. | Journal des modifications de STL 17.9 |
Nouvelles fonctionnalités de l'IDE Visual Studio 17.9 | Notes de publication de Visual Studio 2022 version 17.9 |
Amélioration de la conformité du langage C++ dans Visual Studio 2022 17.9 | Améliorations de la conformité, changements de comportement et correctifs de bogues de C++ dans Visual Studio 2022 |
Résumé des mises à jour du backend C++ | Mises à jour du backend MSVC depuis la version 17.3 de Visual Studio 2022 |
Une liste partielle des nouvelles fonctionnalités :
- Les diagnostics
#include
, qui fournissent une analyse détaillée de vos directives#include
. Activez cette fonctionnalité en cliquant avec le bouton droit de la souris sur un#include
et en choisissant Directives #include>Activer les diagnostics de la directive #include. Au-dessus de chaque fichier#include
figure le nombre de fois où votre code fait référence à ce fichier#include
. Cliquez sur le lien de référence pour naviguer jusqu'à l'endroit où votre code utilise un élément de ce fichier d'en-tête. Pour afficher le temps de génération de vos directives#include
, exécutez l'aperçu de la génération en accédant à Génération> > Exécuter l'aperçu de la génération sur Solution>Génération.Au-dessus du #include se trouve un lien de **référence** et de nombreuses références à ce fichier #include (dans ce cas 1). Le temps de construction est également indiqué (dans ce cas, moins d'une demi-seconde).
- Visualisation de la disposition de la mémoire, qui montre comment la mémoire est organisée pour vos classes, structures et unions. Survolez un type et choisissez le lien Disposition de la mémoire dans l'onglet Infos rapides pour ouvrir une fenêtre dédiée affichant la disposition de la mémoire du type sélectionné. En survolant les types de données individuels dans cette fenêtre, vous obtiendrez des informations détaillées sur leur taille et leur décalage dans le type.
La fenêtre d'agencement de la mémoire montre le contenu de la classe Snake. Elle montre les décalages de mémoire des différents champs de la classe, tels que les classes de points pour l'emplacement de la tête et du corps, le score, etc.
- Vous pouvez maintenant spécifier votre propre exécutable CMake personnalisé. Cette fonctionnalité est utile si vous souhaitez utiliser une version spécifique de CMake qui n'est pas livrée avec Visual Studio. Naviguez vers Outils>Options et sélectionnez CMake>Général. Sélectionnez Activer l'exécutable CMake personnalisé et indiquez le chemin d'accès au répertoire de votre exécutable CMake.
La boîte de dialogue des options CMake avec l'option « Enable custom CMake executable » et le champ « CMake Executable Directory » en surbrillance.
- IntelliSense amélioré pour les projets Unreal Engine.
- Amélioration de la prise en charge de la norme C++23 :
std::format
etstd::span
formattable
,range_format
,format_kind
, etset_debug_format()
dans le cadre du formatage des plages P2286R8<mdspan>
selon P0009R18 et les changements de formulation ultérieurs qui ont été appliqués à la norme C++23. De plus,format()
peut formater les pointeurs selon P2510R3.
Nouveautés de C++ dans Visual Studio version 17.8
Publication : novembre 2023
Pour plus d'informations sur | Consultez |
---|---|
Nouveautés pour les développeurs C++ | Nouveautés pour les développeurs C++ dans Visual Studio 2022 17.8 |
Bibliothèque standard (STL) fusionnée C++26, fonctionnalités C++23, extensions C++20, résolutions de problèmes LWG, améliorations des performances, comportement amélioré et bogues corrigés. | Journal des modifications de STL 17.8 |
Nouvelles fonctionnalités de l'IDE Visual Studio 17.8 | Notes de publication de Visual Studio 2022 version 17.8 |
Amélioration de la conformité du langage C++ dans Visual Studio 2022 17.8 | Améliorations de la conformité, changements de comportement et correctifs de bogues de C++ dans Visual Studio 2022 |
Vue d'ensemble des améliorations apportées au C++ dans Visual Studio, VS Code et vcpkg au cours de l'année 2023 | Une année d'améliorations C++ |
Une liste partielle des nouvelles fonctionnalités :
- Des diagnostics structurés C++ dans la fenêtre de sortie et une nouvelle fenêtre de détails du problème qui fournit plus d'informations sur l'erreur. Pour plus d'informations, reportez-vous à la section Sortie SARIF structurée et à la fenêtre de détails du problème.
- Une fonctionnalité qui vous permet de visualiser la taille et l'alignement de vos classes, structs, unions, types de base ou enums avant même que le code ne soit compilé. Survolez l'identifiant et une info-bulle affiche les informations relatives à la taille et à l'alignement.
- Fonctionnalité qui suggère quand marquer les fonctions membres
const
parce qu’elles ne modifient pas l’état de l’objet. Survolez une fonction membre et cliquez sur l'icône de l'ampoule pour marquer la fonction commeconst
. - Visual Studio vous invite désormais à marquer les fonctions globales comme statiques à l'aide d'une icône de tournevis qui apparaît à côté du nom de la fonction. Cliquez sur l'icône du tournevis pour marquer la fonction comme statique.
- Les directives #include non utilisées sont estompées dans l'éditeur. Vous pouvez passer la souris sur un include estompé et utiliser le menu de l'ampoule pour supprimer cet include ou tous les includes inutilisés. Vous pouvez également ajouter des directives
#include
pour les entités qui sont indirectement incluses via d'autres en-têtes. Pour plus d'informations, voir Nettoyer les inclusions C/C++ dans Visual Studio. - Plus de support pour Unreal Engine :
- Unreal Engine Test Adapter vous permet de découvrir, d'exécuter, de gérer et de déboguer vos tests Unreal Engine sans quitter l'IDE Visual Studio.
- Avec Unreal Engine Code Snippets, vous pouvez trouver des constructions communes d'Unreal Engine sous forme d'extraits dans votre liste de membres.
- Build Insights est désormais intégré à Visual Studio 2022 et fonctionne avec les projets MSBuild et CMake utilisant MSVC. Vous pouvez désormais voir des informations supplémentaires sur la compilation d'une fonction, telles que le temps de compilation et le nombre de ForceInlines, ainsi que l'impact des fichiers d'en-tête sur le temps de compilation. Pour plus d'informations, voir Tutoriel : Dépannage de l'inlining de fonctions sur le temps de compilation et Tutoriel : Résolution des problèmes liés à l'impact des fichiers d'en-tête sur le temps de compilation.
- La prise en charge des tests unitaires Linux distants vous permet désormais d’exécuter vos tests CTest et GTest sur vos machines Linux distantes à partir de l’Explorateur de tests de Visual Studio, tout comme vos tests locaux.
Nouveautés de C++ dans Visual Studio version 17.7
Date de publication : août 2023
Pour plus d'informations sur | Consultez |
---|---|
Nouveautés pour les développeurs C++ | Nouveautés pour les développeurs C++ dans Visual Studio 2022 17.7 |
Nouvelles fonctionnalités C++ spécifiques au développement de jeux | Libérer la puissance de Visual Studio 2022 pour le développement de jeux en C++ |
Fonctionnalités de la bibliothèque standard (STL) fusionnées avec C++23, résolution des problèmes du LWG, amélioration des performances, amélioration du comportement et correction des bogues. | Journal des modifications de STL 17.7 |
Nouvelles fonctionnalités de l'IDE Visual Studio 17.7 | Notes de publication de Visual Studio 2022 version 17.7 |
Amélioration de la conformité du langage C++ dans Visual Studio 2022 17.7 | Améliorations de la conformité C++, changements de comportement et corrections de bogues dans Visual Studio 2022. |
Une liste partielle des nouvelles fonctionnalités :
- Sessions de débogage et temps de chargement des projets plus rapides
- Visualisation étape par étape de l'expansion des macros
- Téléchargement en un clic du sous-système Windows pour Linux (WSL)
- Prise en charge améliorée des commentaires Doxygen
- Aperçu de la construction de C++ pour le développement de jeux
-
/std:clatest
ajouté pour le compilateur C. - Améliorations du projet Unreal Engine telles que l'IntelliSense plus rapide et la colorisation de la syntaxe, la possibilité de trouver toutes les références au Blueprint Unreal Engine, et plus encore.
Nouveautés de C++ dans Visual Studio version 17.6
Publication : mai 2023
Pour plus d'informations sur | Consultez |
---|---|
Nouveautés pour les développeurs C++ | Nouveautés pour les développeurs C++ dans Visual Studio 2022 17.6 |
Fonctionnalités de la bibliothèque standard (STL) fusionnées avec C++23, résolution des problèmes du LWG, amélioration des performances, amélioration du comportement et correction des bogues. | Journal des modifications de STL 17.6 |
Nouvelles fonctionnalités de l'IDE Visual Studio 17.6 | Notes de publication de Visual Studio 2022 version 17.6 |
Amélioration de la conformité du langage C++ dans Visual Studio 2022 17.6 | Améliorations de la conformité, changements de comportement et correctifs de bogues de C++ dans Visual Studio 2022 |
Voici une liste partielle des nouvelles fonctionnalités :
- Débogage des scripts CMake
- Prise en charge intégrée du High Level Shading Language (HLSL)
- Visualisation du journal d'Unreal Engine
- VCPKG est désormais ajouté par défaut
- Prise en charge initiale de C++20 dans les projets C++/CLI et de certaines fonctionnalités de la bibliothèque standard C++23 pour les plages.
Nouveautés de C++ dans Visual Studio version 17.5
Publication : 28 février 2023
Pour plus d'informations sur | Consultez |
---|---|
Nouveautés pour les développeurs C++ | Nouveautés pour les développeurs C++ dans Visual Studio 2022 17.5 |
Fonctionnalités de la bibliothèque standard (STL) fusionnées avec C++23, résolution des problèmes du LWG, amélioration des performances, amélioration du comportement et correction des bogues. | Journal des modifications de STL 17.5 |
Nouvelles fonctionnalités de l'IDE Visual Studio 17.5 | Notes de publication de Visual Studio 2022 version 17.5 |
Voici une liste partielle des nouvelles fonctionnalités :
Désormais,
std::move
,std::forward
,std::move_if_noexcept
etstd::forward_like
ne produisent pas d'appels de fonction dans le code généré, même en mode débogage. Cette modification évite les casts nommés provoquant une surcharge inutile dans les builds de débogage./permissive-
(ou une option qui l'implique, comme/std:c++20
oustd:c++latest
) est requise.Ajout de
[[msvc::intrinsic]]
. Vous pouvez appliquer cet attribut aux fonctions non récursives composées d'une seule distribution, qui ne prennent qu'un seul paramètre.Ajout de la prise en charge de la console Linux dans le terminal intégré, permettant d'effectuer des E/S de terminal.
Ajout de la prise en charge expérimentale initiale des primitives atomiques C11 (
<stdatomic.h>
). Vous pouvez activer cette fonctionnalité expérimentale avec l'option/experimental:c11atomics
en mode/std:c11
ou version ultérieure.Ajout d'un nouvel ensemble de vérifications expérimentales de haute confiance au vérificateur de durée de vie pour réduire le bruit.
Une nouvelle fonctionnalité en préversion, Remote File Explorer, vous permet d'afficher le répertoire de fichiers sur vos ordinateurs distants au sein de VS, et de charger et de télécharger des fichiers vers celui-ci.
Modification du contrôle de version des exécutables CMake fournis avec Visual Studio pour qu'il corresponde aux versions de Kitware.
Ajout de la prise en charge de la fonction Rechargement à chaud au modèle de projet CMake.
Go To Definition for C++ utilise désormais un indicateur plus subtil de l'opération prenant plus de temps, en remplaçant la boîte de dialogue modale des versions précédentes.
Lancement d'une expérience fournissant des résultats plus pertinents dans la liste dans l'autocomplétion C++ et la liste des membres. Cette fonctionnalité s'appelait auparavant IntelliSense prédictif, mais utilise désormais une nouvelle méthode de présentation.
Nous fournissons désormais un ensemble d'outils Arm64 Clang natif avec notre charge de travail LLVM, ce qui permet la compilation native sur les machines Arm64.
Ajout de la localisation à l'extension Image Watch (cette extension est disponible sur la Place de marché et n'est pas fournie via Visual Studio Installer).
Ajout de la prise en charge de l'ouverture d'une fenêtre de terminal dans le conteneur de développeur en cours d'exécution.
Intégration de plusieurs améliorations à l'expansion macro IntelliSense. Nous avons notamment activé l'expansion récursive dans un plus grand nombre de contextes et ajouté des options à la fenêtre contextuelle pour copier l'expansion dans le presse-papiers ou développer la macro en ligne.
La surveillance simultanée est désormais prise en charge dans le moniteur série. La surveillance simultanée vous permet de surveiller plusieurs ports à la fois, côte à côte. Appuyez sur le bouton Plus pour ouvrir un autre moniteur série et commencer à travailler.
Vous pouvez désormais visualiser les propriétés des classes de base modifiées dans une ressource Unreal Blueprint sans quitter Visual Studio. Double-cliquez sur une référence de Blueprint pour une classe ou une propriété C++ afin d'ouvrir l'inspecteur de ressources UE dans Visual Studio.
Activation de l'exécution de DevContainers sur une machine Linux distante.
Sélection de plusieurs cibles à générer dans la vue Cibles CMake.
Ajout de la prise en charge de CMakePresets.json version 5. Consultez la documentation CMake pour plus d'informations sur les nouvelles fonctionnalités.
Activation de l'Explorateur de tests pour générer et tester plusieurs cibles CMake en parallèle.
Ajout de l'option « Ouvrir un conteneur dans le terminal » aux conteneurs de développement.
Fonctionnalités de bibliothèque standard implémentées :
Nouveautés de C++ dans Visual Studio version 17.4
Publication : novembre 2022
Pour plus d'informations sur | Consultez |
---|---|
Nouveautés pour les développeurs C++ | Nouveautés pour les développeurs C++ dans Visual Studio 2022 17.4 |
Fonctionnalités de la bibliothèque standard (STL) fusionnées avec C++23, résolution des problèmes du LWG, amélioration des performances, amélioration du comportement et correction des bogues. | Journal des modifications de STL 17.4 |
Nouvelles fonctionnalités de l'IDE Visual Studio 17.4 | Notes de publication de Visual Studio 2022 version 17.4 |
Amélioration de la conformité du langage C++ dans Visual Studio 2022 17.4 | Améliorations de la conformité, changements de comportement et correctifs de bogues de C++ dans Visual Studio 2022 |
Une liste partielle des nouvelles fonctionnalités de la version 17.4 :
Amélioration des messages d'erreur du compilateur pour fournir des informations plus correctes et utiles, en particulier pour les concepts.
Ajout de l'option expérimentale MSVC
/experimental:log<directory>
pour produire des diagnostics SARIF structurés dans le répertoire spécifié.Ajout de la prise en charge des attributs C23 à IntelliSense et progrès dans la prise en charge des modules C++20.
Amélioration des performances d'indexation lors de l'ouverture d'une nouvelle solution. Les grands projets pourraient voir une amélioration de 20 à 35 % par rapport à la version 17.3.
Amélioration de l'optimisation de la valeur de retour nommée (NRVO) :
- NRVO est activée pour les cas qui impliquent la gestion d'exceptions ou des boucles.
- NRVO est activée même sous
/Od
si l'utilisateur passe l'option/Zc:nrvo
, ou/std:c++20
ou ultérieure, ou/permissive-
. - Vous pouvez désormais désactiver NRVO avec l'option
/Zc:nrvo-
.
Mise à niveau de la version de LLVM fournie avec Visual Studio vers 15.0.1. Pour plus d'informations sur ce qui est disponible, consultez les notes de publication de LLVM et Clang.
Ajout de la prise en charge de Visual Studio pour les artefacts vcpkg avec des projets CMake. Pour les projets qui incluent un manifeste vcpkg, l'environnement est activé automatiquement à l'ouverture du projet. Pour en savoir plus sur cette fonctionnalité, consultez le billet de blog vcpkg environment activation in Visual Studio.
Vous pouvez désormais utiliser des conteneurs de développement pour vos projets C++. Pour en savoir plus sur cette fonctionnalité, consultez notre billet de blog Dev Containers for C++.
IntelliSense respecte désormais l'ordre des en-têtes préinclus lorsque l'un d'entre eux est un PCH. Auparavant, lorsqu'un PCH était utilisé via
/Yu
et inclus de force via/FI
, IntelliSense le traitait toujours en premier, avant tout autre en-tête inclus via/FI
. Ce comportement ne correspondait pas au comportement de build. Avec cette modification, les en-têtes/FI
sont traités dans l'ordre dans lequel ils sont spécifiés.Suppression de préfixes internes des noms CTest dans l'Explorateur de tests.
Mise à jour de la version de CMake fournie avec Visual Studio vers la version 3.24.1. Pour plus d'informations sur ce qui est disponible, consultez les Notes de publication de CMake.
Mise à jour d'Android SDK :
- Les scripts Ant ont été supprimés, de sorte que les utilisateurs ne voient plus de modèles basés sur Ant dans la boîte de dialogue Nouveau projet. Pour obtenir de l'aide sur la migration de modèles Ant vers des modèles Gradle, consultez Migration de builds à partir d'Apache Ant
- Ajout de la prise en charge de la génération avec NDK 23 et 24
- Mise à jour du composant NDK vers le LTS version 23
Ajout d'implémentations vectorisées de
ranges::min_element()
,ranges::max_element()
etranges::minmax_element()
Nous continuons à suivre les derniers développements en matière de normalisation C++. La prise en charge de ces fonctionnalités C++23 est disponible en incluant
/std:c++latest
dans les options de votre compilateur :P2302R4
ranges::contains
etranges::contains_subrange
Le constructeur de plage de P2499R0
string_view
devrait êtreexplicit
P0849R8
auto(x)
: decay-copy dans le langage(La partie compilateur n'est pas encore implémentée. La partie bibliothèque a été implémentée en mode C++20 lors de l'implémentation initiale de la prise en charge des plages.)
P0881R7
<stacktrace>
P2301R1 Ajouter un alias de
pmr
pourstd::stacktrace
P1328R1
constexpr type_info::operator==()
P2440R1
ranges::iota
,ranges::shift_left
etranges::shift_right
P2441R2
views::join_with
Ajout d'une option « Navigation après la création d'une déclaration/définition » pour vous permettre de choisir le comportement de navigation de la fonctionnalité Créer la déclaration/la définition. Vous pouvez choisir entre l'aperçu (par défaut) ou l'ouverture du document, voire aucune navigation.
Les builds Arm64 de Visual Studio regroupent désormais les versions Arm64 de CMake et Ninja.
Ajout de la prise en charge de CMake Presets version 4. Pour plus d'informations sur ce qui est disponible, consultez les Notes de publication de CMake.
Les connexions système à distance utilisant le Gestionnaire de connexions prennent désormais en charge SSH ProxyJump. ProxyJump est utilisé pour accéder à un hôte SSH via un autre hôte SSH (par exemple, pour accéder à un hôte derrière un pare-feu).
Nouveautés de C++ dans Visual Studio version 17.3
publication : août 2022
Pour plus d'informations sur | Consultez |
---|---|
Nouveautés pour les développeurs C++ | Améliorations du C++ dans la version 17.3 |
Fonctionnalités de la bibliothèque standard (STL) fusionnées avec C++23, résolution des problèmes du LWG, amélioration des performances, amélioration du comportement et correction des bogues. | Journal des modifications de STL 17.3 |
Nouvelles fonctionnalités de l'IDE Visual Studio 17.3 | Notes de publication de Visual Studio 2022 version 17.3 |
Amélioration de la conformité du langage C++ dans Visual Studio 2022 17.3 | Améliorations de la conformité, changements de comportement et correctifs de bogues de C++ dans Visual Studio 2022 |
Une liste partielle des nouvelles fonctionnalités dans la version 17.3 :
- La chaîne d'outils Arm64EC n'est plus marquée comme expérimentale. Elle est prête pour être utilisée en production.
- Le terminal Visual Studio peut désormais être utilisé en tant que client SSH avec vos connexions SSH stockées. Une fois les outils C++ pour Linux installés, ouvrez la fenêtre de l'outil Terminal. La liste déroulante Terminal est remplie avec vos connexions stockées. Lorsque vous sélectionnez une connexion, une nouvelle fenêtre de Terminal s'ouvre dans Visual Studio, qui affiche un pseudo-terminal sur votre système distant. Les caractères de contrôle, les couleurs et la reconnaissance de la position du curseur sont tous pris en charge.
- Visual Studio peut désormais ajouter des modèles de classe Unreal Engine pour vos projets UE. Pour essayer cette fonctionnalité, vérifiez que Prise en charge de l'IDE pour Unreal Engine est sélectionné dans la charge de travail Développement de jeux en C++ dans Visual Studio Installer. Lorsque vous travaillez sur un projet UE, cliquez avec le bouton droit dans le projet ou un dossier/filtre, puis sélectionnez Ajouter>Classe UE.
- Atteindre la définition mémorise maintenant la signature précédente et navigue en conséquence lorsqu'une meilleure correspondance n'est pas disponible (par exemple, après que vous avez modifié manuellement la signature de l'une des paires). La réactivité de Atteindre tout est améliorée. Auparavant, les résultats s'affichaient une fois que vous cessiez de taper. Dans la nouvelle expérience, les résultats s'affichent à mesure que vous tapez.
- Dans les contextes nécessitant une saisie semi-automatique de type
enum
(par exemple, affectations à des variablesenum
, étiquettes de casse, type deenum
retournant, etc.), la liste de saisie semi-automatique est désormais filtrée uniquement sur les énumérateurs correspondants et les constructions associées. - Ajout de la prise en charge de NuGet PackageReference pour les projets MSBuild C++/CLI ciblant .NET Core. Cette modification a été apportée pour débloquer les bases de code mixtes de la possibilité d'adopter .NET Core. Cette prise en charge ne fonctionne pas pour les autres types de projets C++ ou les types de projets C++ ciblant .NET Framework. Il n'est pas prévu d'étendre la prise en charge de PackageReference à d'autres scénarios C++. L'équipe travaille sur des expériences distinctes impliquant vcpkg, adaptées aux scénarios non MSBuild et offrant une plus grande fonctionnalité.
- Ajout d'une fenêtre Moniteur série pour le développement incorporé, disponible via Débogage>Windows>Moniteur série.
- Amélioration de l'indexation C++ d'environ 66 % par rapport à la version 17.2.
- Mise à jour de la version de CMake fournie avec Visual Studio vers la version 3.23. Pour plus d'informations sur ce qui est disponible, consultez les Notes de publication de CMake 3.23.
- Mise à niveau des versions des outils LLVM fournis avec Visual Studio vers v14. Pour plus d'informations sur ce qui est disponible, consultez les notes de publication de LLVM et Clang.
- Mise à jour de l'ensemble d'outils Dev 16.11 C++ côte à côte vers la version 14.29.30145.00. La dernière version de l'ensemble d'outils Dev 16.11 C++ contient des correctifs de bogues importants, dont la correction de tous les rapports de défauts C++20 restants. Pour plus d'informations sur les correctifs de bogues, notamment les rapports de défauts C++20 dans Dev 16.11, consultez les Notes de publication de Visual Studio 2019 version 16.11.14.
- Nous avons apporté diverses améliorations à l'expérience dans l'éditeur des modules C++. Nous travaillons continuellement à l'amélioration de la qualité de l'expérience, mais vous encourageons à l'essayer dans la version 17.3. Signalez les problèmes restants via Developer Community.
Nouveautés de C++ dans Visual Studio version 17.2
Publication : mai 2022
Pour plus d'informations sur | Consultez |
---|---|
Nouveautés pour les développeurs C++ | Visual Studio 2022 17.2 is now available |
La bibliothèque standard (STL) a fusionné les rapports de défauts C++20, les fonctionnalités C++23, les résolutions de problèmes LWG, les améliorations de performance, le comportement amélioré et les bogues corrigés. | Journal des modifications de STL 17.2 |
Nouvelles fonctionnalités de l'IDE Visual Studio 17.2 | Notes de publication de Visual Studio 2022 version 17.2 |
Amélioration de la conformité du langage C++ dans Visual Studio 2022 17.2 | Améliorations de la conformité, changements de comportement et correctifs de bogues de C++ dans Visual Studio 2022 |
Une liste partielle des nouvelles fonctionnalités dans la version 17.2 :
- Ajout de la prise en charge du compilateur pour la fonctionnalité C++23 déduisant
this
, disponible sous l'option/std:c++latest
. - Ajout de la prise en charge d'IntelliSense pour les fonctionnalités C++23 déduisant
this
etif consteval
. - Ajout de la prise en charge du nom de paramètre inline et de l'indicateur de type, activé en appuyant sur Alt+F1 ou en appuyant deux fois Ctrl. Ce comportement peut être personnalisé sous Outils > Options > Éditeurs de texte > C/C++ > IntelliSense.
- Ajout de la prise en charge expérimentale des modules C++20 dans les projets CMake. Cette prise en charge est actuellement disponible uniquement avec le générateur Visual Studio (MSBuild).
- Dans la version 17.1, nous avons introduit les vues de registre de périphériques et RTOS pour les développeurs incorporés. Nous continuons d'améliorer les fonctionnalités de ces vues avec des améliorations de la facilité d'utilisation dans la version 17.2 :
- La fenêtre de l'outil RTOS est désormais masquée par défaut. Elle empêche l'affichage d'une fenêtre d'outil avec des messages d'erreur qui ne sont pas pertinents lorsque vous n'utilisez pas de RTOS.
- Lorsque vous double-cliquez sur un objet RTOS dans la fenêtre d'outils, une surveillance est ajoutée à l'objet.
- Lorsque vous sélectionnez les valeurs de début et de fin du pointeur de pile dans la fenêtre d'outils RTOS, il s'ouvre dans la fenêtre de mémoire.
- Ajout de la prise en compte des threads pour les cibles d'appareils dans la fenêtre de la pile d'appels.
- Les utilisateurs peuvent maintenant sélectionner une icône d'épingle en regard de périphériques, de registres ou de champs pour les épingler en haut de la vue périphérique.
- Nous avons ajouté des implémentations des rapports de défauts C++20 restants (également appelés rétroportages). Toutes les fonctionnalités C++20 sont désormais disponibles sous l'option
/std:c++20
. Pour plus d'informations sur les rétroportages implémentés, consultez le Projet Rapports de défauts C++20 dans le dépôt GitHub Microsoft/STL et le billet de blog MSVC's STL Completes/std:c++20
. - Nous avons ajouté diverses fonctionnalités de bibliothèque C++23, disponibles sous l'option
/std:c++latest
. Pour plus d'informations sur les nouvelles fonctionnalités, consultez le journal des modifications du référentiel STL. - Amélioration des performances de l'indexation C++ initiale jusqu'à 20 %, en fonction de la profondeur du graphique include.
Nouveautés de C++ dans Visual Studio version 17.1
Publication : février 2023
Pour plus d'informations sur | Consultez |
---|---|
Nouveautés pour les développeurs C++ | Visual Studio 2022 17.1 is now available ! |
Fonctionnalités de la bibliothèque standard (STL) fusionnées avec C++23, résolution des problèmes du LWG, amélioration des performances, amélioration du comportement et correction des bogues. | Journal des modifications de STL 17.1 |
Nouvelles fonctionnalités de l'IDE Visual Studio 17.1 | Notes de publication de Visual Studio 2022 version 17.1 |
Amélioration de la conformité du langage C++ dans Visual Studio 2022 17.1 | Améliorations de la conformité, changements de comportement et correctifs de bogues de C++ dans Visual Studio 2022 |
Une liste partielle des nouvelles fonctionnalités dans la version 17.1 :
- Un nouveau modèle Configurer la présélection a été ajouté pour configurer et générer des projets CMake sur un système macOS distant avec
CMakePresets.json
. Vous pouvez également lancer des cibles CMake sur un système macOS distant, puis déboguer à distance dans le débogueur Visual Studio adossé à GDB ou LLDB. - Vous pouvez maintenant déboguer des vidages principaux sur un système macOS distant à partir de Visual Studio avec LLDB ou GDB.
- Les versions de
Clang
etLLVM
livrées avec Visual Studio ont été mises à niveau vers v13. - L'intégration CMake de Visual Studio n'est active que lorsqu'un
CMakeLists.txt
est identifié à la racine de l'espace de travail ouvert. Si unCMakeLists.txt
est identifié à un autre niveau de l'espace de travail, vous êtes invité à activer l'intégration CMake de Visual Studio avec une notification. - De nouvelles vues vous permettent d'inspecter et d'interagir avec les registres périphériques des microcontrôleurs et les objets des systèmes d'exploitation en temps réel (RTOS), disponibles via Débogage>Windows>Registres intégrés.
- Ajout d'une nouvelle vue de thread pour les projets RTOS, disponible via Déboguer>Windows>Objets RTOS. Pour plus d'informations, consultez la section Développement de logiciels embarqués dans Visual Studio.
Nouveautés de C++ dans Visual Studio version 17.0
Publication : 1er novembre 2021
Pour plus d'informations sur | Consultez |
---|---|
Nouvelles fonctionnalités de l'IDE Visual Studio 17.0 | Notes de publication de Visual Studio 2022 version 17.0 |
Fonctionnalités de la bibliothèque standard (STL) fusionnées C++23 et C++26, rapports de défauts C++20, résolutions de problèmes LWG, améliorations des performances, comportement amélioré et bogues corrigés. | Journal des modifications de STL 17.0 |
Amélioration de la conformité du langage C++ dans Visual Studio 2022 17.0 | Améliorations de la conformité, changements de comportement et correctifs de bogues de C++ dans Visual Studio 2022 17.10 |
Aperçu de certaines des nouvelles fonctionnalités de Visual Studio 2022 version 17.0 :
- L'IDE Visual Studio,
devenv.exe
, est désormais une application 64 bits native. - L'ensemble d'outils MSVC utilise désormais par défaut le hachage source SHA-256 dans les enregistrements de débogage. Auparavant, l'ensemble d'outils utilisait MD5 pour le hachage source par défaut.
- Les outils de génération v143 sont désormais disponibles via le programme d'installation de Visual Studio et dans les outils de génération autonomes.
Rechargement à chaud pour C++ natif
- Le Rechargement à chaud pour C++ permet d'apporter de nombreux types de modifications de code à votre application en cours d'exécution, et de les appliquer sans avoir à interrompre l'exécution de l'application avec quelque chose comme un point d'arrêt.
Dans Visual Studio 2022, lorsque vous démarrez votre application dans le débogueur, vous pouvez utiliser le bouton Rechargement à chaud pour la modifier pendant qu'elle est toujours en cours d'exécution. Cette expérience est optimisée par la fonction native Modifier et continuer. Pour plus d'informations sur les modifications prises en charge, consultez Modifier et Continuer pour (C++).
- Le Rechargement à chaud prend en charge les projets CMake et Open Folder.
Prise en charge de WSL2
- Vous pouvez maintenant générer et déboguer en mode natif sur WSL2 sans établir de connexion SSH. Les projets CMake multiplateformes et les projets Linux MSBuild sont pris en charge.
Prise en charge améliorée de CMake
Mise à jour de la version de CMake livrée avec Visual Studio vers la version 3.21. Pour plus d'informations sur ce qui est disponible dans cette version, consultez les Notes de publication de CMake 3.21.
Les pages de présentation de CMake ont été mises à jour pour supporter
CMakePresets.json
.Vous pouvez maintenant configurer et générer vos projets CMake avec CMake 3.21 et
CMakePresets.json
v3.Visual Studio prend désormais en charge l'option
buildPresets.targets
dansCMakePresets.json
. Cette option vous permet de créer un sous-ensemble de cibles dans votre projet CMake.Le menu Projet dans les projets CMake est rationalisé et expose les options « Delete Cache and Reconfigure » et « View Cache ».
Implémentation de l'option de compilateur
/scanDependencies
pour répertorier les dépendances de module C++20 pour les projets CMake, comme décrit dans P1689R5. Il s'agit d'une étape vers la prise en charge de la création de projets basés sur des modules avec CMake, et nous travaillons à finaliser cette prise en charge dans les versions ultérieures.
Améliorations apportées à la bibliothèque standard
Les améliorations de la bibliothèque standard (STL) sont mises en évidence ici. Pour obtenir une liste complète des nouvelles fonctionnalités, des modifications, des correctifs de bogues et des améliorations des performances, consultez le Journal des modifications de l'équipe STL.
- Ajout de visualiseurs de débogage pour améliorer l'affichage des types suivants :
source_location
,bind_front()
,u8string
(et ses itérateurs),default_sentinel_t
,unreachable_sentinel_t
,ranges::empty_view
,ranges::single_view
,ranges::iota_view
(et son itérateur/sentinelle),ranges::ref_view
,thread
,thread::id
,jthread
etfilesystem::path
- Ajout de
[[nodiscard]]
à la famille de fonctionsstoi()
dans<string>
et à diverses fonctions dans<locale>
, telles que les fonctions membrescollate
,has_facet()
et les famillesisalnum()
ettolower()
. - P0980R1 Réalisé
std::string
constexpr
dans VS 2019 16.10. Maintenant supporté pour Clang. - P1004R2 Réalisé
std::vector
constexpr
dans VS 2019 16.10. Maintenant supporté pour Clang.
Fonctionnalités C++23 mises en évidence
- P1048R1 Ajout de
is_scoped_enum
, nouvelle caractéristique pour la bibliothèque C++ Standard, qui détecte si un type est une énumération délimitée. - P1132R7
out_ptr()
,inout_ptr()
- P1679R3
contains()
pourbasic_string
etbasic_string_view
- P1682R3
to_underlying()
pour les énumérations - P2162R2 Autoriser l'héritage de
std::variant
- P2166R1 Interdire la construction
basic_string
etbasic_string_view
à partir denullptr
. Cette modification est un changement cassant de source. Le code qui avait auparavant un comportement non défini au moment de l'exécution est maintenant rejeté avec des erreurs du compilateur. - P2186R2 Suppression de la prise en charge du garbage collection. Cette modification supprime
declare_reachable
,undeclare_reachable
,declare_no_pointers
,undeclare_no_pointers
,get_pointer_safety
. Auparavant, ces fonctions n'avaient aucun effet.
Améliorations des performances mises en évidence
-
<format>
détecte maintenant lorsqu'il écrit dans unback_insert_iterator
pour unebasic_string
ou unvector
, et effectue un appel plus rapide deinsert()
à laend()
du conteneur. - Nous avons amélioré les performances de
std::find()
etstd::count()
pourvector<bool>
19x et 26x (fois, pas pour cent). - Nous avons amélioré les performances de
std::count()
pourvector<bool>
-
std::byte
a maintenant les mêmes performances queunsigned char
dansreverse()
etvariant::swap()
Prise en charge de Clang et LLVM
Les outils LLVM livrés avec Visual Studio sont mis à jour vers LLVM 12. Pour plus d'informations, consultez les Notes de publication de LLVM.
La prise en charge de Clang-cl a été mise à jour vers LLVM 12.
Vous pouvez maintenant déboguer des processus s'exécutant sur un système distant à partir de Visual Studio en utilisant LLDB.
C++ AMP déconseillé
- Les en-têtes C++ AMP sont désormais déconseillés. L'inclusion de
<amp.h>
dans un projet C++ produit des erreurs de génération. Pour ignorer les erreurs, définissez_SILENCE_AMP_DEPRECATION_WARNINGS
. Pour plus d'informations, consultez nos liens de dépréciation AMP.
Améliorations d'IntelliSense
- Nous avons apporté des améliorations à IntelliSense C++ en lien avec la mise en évidence de la navigation et de la syntaxe pour les types à partir de modules et d'unités d'en-tête importés. IntelliSense est pour nous un domaine d'investissement actif. Aidez-nous à nous améliorer : partagez vos commentaires sur Developer Community en sélectionnant Aide>Envoyer des commentaires.
- Nous avons amélioré les performances d'IntelliSense C++ en optimisant l'utilisation d'en-tête mis en cache et l'accès à la base de données de symboles, ce qui offre de meilleurs temps de chargement pour accéder à votre code.
- Le Linter de code IntelliSense pour C++ est désormais activé par défaut, fournissant des suggestions instantanées pendant que vous-tapez, et des suggestions de correctif pour les défauts de code courants.
- IntelliSense C++ pour les projets CMake fonctionne désormais lors de l'utilisation d'une présélection avec un nom d'affichage.
Mises à jour de la charge de travail C++
- Mise à jour vers NDK r21 LTS dans la charge de travail Développement mobile C++.
- La charge de travail Développement de jeux avec C++ installe désormais le moteur Unreal le plus récent avec prise en charge de Visual Studio 2022.
Améliorations apportées à l'analyse du code
- L'analyse du code impose désormais que les valeurs de retour des fonctions annotées avec
_Check_return_
ou_Must_inspect_result_
soient vérifiées. - La détection de déréférencement de pointeur nul est améliorée dans notre outil d'analyse de code.
- Ajout de la prise en charge de
gsl::not_null
l'analyse du code. - Prise en charge de Libfuzzer sous l'option du compilateur
/fsanitize=fuzzer
.
Notes de publication pour les versions antérieures
Des notes de publication pour les anciennes versions de C++ sont également disponibles :
- Pour plus d'informations sur les nouveautés de C++ dans Visual Studio 2019, consultez Nouveautés de C++ dans Visual Studio 2019.
- Pour plus d'informations sur les nouveautés de C++ dans Visual Studio 2017, consultez Nouveautés de C++ dans Visual Studio 2017.
- Pour plus d'informations sur les nouveautés des versions antérieures, voir Nouveautés de Visual C++ de 2003 à 2015.
Problèmes connus
C++ IntelliSense
Pour plus d'informations sur les autres problèmes ouverts et les solutions de contournement disponibles pour C++ dans Visual Studio 2022, consultez la liste des problèmes de Developer Community C++.
Commentaires et suggestions
Nous aimerions connaître votre opinion. Vous pouvez signaler un problème ou suggérer une fonctionnalité en utilisant l'icône Envoyer des commentaires dans l'angle supérieur droit du programme d'installation ou de l'IDE Visual Studio, ou en sélectionnant Aide>Envoyer des commentaires. Vous pouvez suivre vos problèmes à l'aide de Visual Studio Developer Community, où vous ajoutez des commentaires ou cherchez des solutions. Vous pouvez également obtenir une aide gratuite pour l'installation via notre support Live Chat.
Blogs
Tirez parti des insights et des recommandations disponibles sur le site Microsoft Developer Blogs pour recevoir les dernières mises à jour des versions. Les blogs incluent des billets approfondis sur un vaste éventail de fonctionnalités. Le blog de l'équipe C++ et le blog Visual Studio vous intéresseront particulièrement.