
R�cemment, Microsoft a annonc� la disponibilit� g�n�rale de la version 17.14 de Visual Studio 2022. Microsoft affirme que cette version s'inscrit dans le cadre de sa mission qui consiste � fournir aux d�veloppeurs des outils plus rapides, plus intelligents et plus productifs pour toutes les charges de travail. Avec la disponibilit� de Visual Studio 17.14, voici les nouvelles fonctionnalit�s que vous pouvez trouver dans cette version pour C++.
Compilateur
Cette version apporte de nombreux correctifs et am�liorations au compilateur MSVC et � la biblioth�que standard.
Visual Studio 2022 17.14 prend en charge de plusieurs fonctionnalit�s de C++23, qui sont disponibles sous les drapeaux /std:c++latest et /std:c++23preview.
Vous pouvez maintenant omettre les () dans certaines formes de lambdas qui les n�cessitaient auparavant.
Code : | S�lectionner tout |
auto lambda = [] constexpr { }; //no '()' needed after the capture list
if consteval a �t� iml�ment�, avec lequel vous pouvez ex�cuter un code diff�rent selon que l'instruction est ex�cut�e � la compilation ou � l'ex�cution. Ceci est utile dans les cas o� votre version d'ex�cution peut �tre fortement optimis�e avec des intrins�ques du compilateur ou de l'assemblage en ligne qui ne sont pas disponibles au moment de la compilation :
Code : | S�lectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 | constexpr size_t strlen(char const* s) { if consteval { // if executed at compile time, use a constexpr-friendly algorithm for (const char *p = s; ; ++p) { if (*p == '\0') { return static_cast<std::size_t>(p - s); } } } else { // if executed at run time, use inline assembly __asm__("SSE 4.2 magic"); } } |
Cette version prend d�sormais en charge les attributs pour les lambdas :
Code : | S�lectionner tout |
1 2 3 4 5 | auto lambda = [] [[nodiscard]] [[deprecated]] { return 10; }; void f() { lambda(); // fires a deprecation warning and a discard of return value warning. } |
Elle prend �galement en charge static operator() et static operator[]. Ceux-ci permettent au compilateur de g�n�rer un code plus efficace pour ces op�rateurs lorsque le param�tre objet implicite n'est pas n�cessaire et ne doit donc pas �tre transmis comme argument � la fonction :
Code : | S�lectionner tout |
1 2 3 4 5 6 7 8 9 | struct X { static bool operator()(int) const; }; inline constexpr X x; int count_x(std::vector<int> const& xs) { return std::count_if(xs.begin(), xs.end(), x); } |
La performance du code g�n�r� s'est am�lior�e gr�ce � la 17.14 qui inclut des optimisations SSA ant�rieures et des simplifications du flux de contr�le. Le compilateur 17.14 g�n�re un code 20 % plus rapide que la version initiale de Visual Studio 2022 17.
Pour le d�bit, le compilateur 17.14 incorpore une simplification du flux de donn�es qui a r�duit le temps de compilation d'un lien UnrealEngine /LTCG repro de 13%.
Biblioth�que standard
Les d�veloppeurs de Visual Studio ont impl�ment� des parties du durcissement de la biblioth�que standard, qui v�rifie certaines instances de comportement non d�fini au moment de l'ex�cution et les signale � l'utilisateur. Ceci est actuellement d�sactiv� par d�faut, mais vous pouvez l'activer en d�finissant _MSVC_STL_HARDENING � 1 pour l'ensemble du projet. La proposition utilise les violations de contrat C++26 comme m�canisme pour signaler les violations de pr�conditions durcies, mais comme ils n'ont pas encore impl�ment� les contrats, ils l'ont appel� par d�faut __fastfail().
Une autre nouvelle fonctionnalit� de s�curit� ajout�e est la pierre tombale du destructeur, qui aide � att�nuer les erreurs de type � use-after-free �. Ceci est �galement d�sactiv� par d�faut, mais peut �tre activ� en d�finissant _MSVC_STL_DESTRUCTOR_TOMBSTONES � 1 pour l'ensemble du projet.
Voici quelques am�liorations diverses apport�es :
- Support du compilateur pour static operator(), ce qui am�liore l�g�rement le codegen.
- Ils ont marqu� std::expected, std::unexpected, et tous les types d'exception STL comme [[nodiscard]]. Cela vous aidera � �viter de les utiliser � mauvais escient.
- Am�lioration des visualiseurs pour std::basic_string_view et ses it�rateurs.
- Ajout ou am�lioration des impl�mentations vectorielles de std::basic_string::find(), find_first_of(), et find_last_of().
D�bogage dynamique C++
Le d�bogage dynamique C++ est une nouvelle fonctionnalit� du compilateur et de l'EDI qui vous donne les performances des versions optimis�es avec l'exp�rience de d�bogage des versions non optimis�es. Elle est d�sormais disponible en avant-premi�re exclusivement avec l'ensemble d'outils MSVC et fonctionne en d�soptimisant dynamiquement les fonctions sur lesquelles vous placez des points d'arr�t d�soptimis�s ou dans lesquelles vous entrez.
Par exemple, sans d�bogage dynamique C++, vous pourriez voir ceci dans votre fen�tre Watch :
De nombreuses variables ne sont pas disponibles, de sorte que le d�bogueur ne peut pas les visualiser.
Cependant, lorsque vous activez la fonctionnalit�, vous pouvez voir ceci :
Les valeurs des variables sont maintenant disponibles car la fonction a �t� d�soptimis�e dynamiquement.
Pour commencer, passez votre configuration en mode Release. Ensuite, faites un clic droit sur votre projet et cliquez sur Propri�t�s pour ouvrir le menu Propri�t�s de configuration. Dans ce menu, cliquez sur Advanced > Use C++ Dynamic Debugging > Yes. Enfin, reconstruisez votre projet. La d�finition de cette propri�t� d�sactivera l'optimisation de l'ensemble du programme.
EDI
Vous pouvez maintenant remplir automatiquement les arguments du mod�le dans la barre de mod�le, qui affiche et permet d'�diter les param�tres du mod�le, lorsque vous utilisez Go to Definition ou F12.
Par exemple, en appuyant sur F12 sur un vecteur, vous passerez au vecteur avec la barre de mod�le automatiquement remplie, ce qui vous permettra d'inspecter et de modifier rapidement les param�tres du mod�le.
Dans l'exemple ci-dessous, l'utilisation de la fonction Go to Definition ou l'appui sur la touche F12 remplit � la fois le type et l'allocateur dans la barre de gabarit.
Ils ont �galement ajout� la possibilit� de contr�ler les en-t�tes qui apparaissent dans la liste d'inclusion lorsque vous tapez #include.
Le param�tre d�roulant dans Tools → Options → Text Editor → C/C++ → IntelliSense → Include style for suggestions pour les suggestions affecte maintenant � la fois les suggestions d'inclusion et la compl�tion d'inclusion, avec les comportements affin�s suivants :
- Directives de base (par d�faut) : Utilise des guillemets pour les chemins relatifs et des crochets pour tout le reste.
- Mode guillemets : Utilise les guillemets pour tous les en-t�tes sauf les en-t�tes standard, qui utilisent les crochets.
- Mode crochets : Utilise des crochets pour tous les en-t�tes qui font partie du chemin d'inclusion.
CMake
Cette version ajoute la prise en charge des compl�ments IntelliSense et des informations rapides pour les modules CMake dans Visual Studio. D�sormais, vous pouvez voir tous les modules CMake disponibles et en savoir plus sur eux directement � partir de l'�diteur Visual Studio.
Lorsque vous survolez un module CMake r�f�renc�, IntelliSense fournit des informations d�taill�es sur le module s�lectionn�, ce qui vous permet de comprendre son utilisation et ses fonctionnalit�s en un coup d'�il.
Lorsque vous commencez � taper un module CMake dans votre fichier CMakeLists.txt ou dans d'autres fichiers de script CMake, IntelliSense fournit une liste de modules disponibles parmi lesquels vous pouvez choisir.
GitHub Copilot
Cette version ajoute la prise en charge de la g�n�ration de commentaires de documents pour GitHub Copilot. Avec cette fonctionnalit� activ�e, vous pouvez taper le mod�le de commentaire selon votre configuration (par exemple, ///), et Copilot compl�tera la description de la fonction en se basant sur le code.
Autre nouveaut� de cette version : les suggestions d'�dition suivante (NES). Lorsqu'une suggestion d'�dition vous est pr�sent�e, si elle se trouve sur une ligne diff�rente de celle sur laquelle vous vous trouvez actuellement, il vous sugg�rera d'abord Tab to Navigate to the corresponding line.
Vous pouvez activer NES dans Tools → Options → GitHub → Copilot → Copilot Completions → Enable Next Edit Suggestions.
D�bogueur de Blueprints Unreal Engine
L'int�gration des Blueprints Unreal Engine vous permet de d�boguer les Blueprints directement dans Visual Studio. Cette int�gration comprend l'affichage des traces de pile de Blueprint dans l'onglet de pile d'appel de Visual Studio et l'affichage des valeurs de n�uds de Blueprint dans le tableau des variables locales. Ces fonctionnalit�s limitent la n�cessit� de basculer entre Visual Studio et l'�diteur Unreal, offrant ainsi une exp�rience de d�bogage transparente et r�duisant les changements de contexte.
Gr�ce � cette nouvelle fonctionnalit�, les d�veloppeurs peuvent facilement suivre les interactions entre les Blueprints et le code C++, ce qui simplifie l'identification et la correction des bogues. En outre, un plugin Unreal Engine pour Visual Studio am�liore cette capacit� en suivant le flux d'ex�cution des Blueprints et en stockant des informations suppl�mentaires, que l'extension du d�bogueur peut ensuite afficher.
Source : Microsoft
Et vous ?


Voir aussi :



Vous avez lu gratuitement 0 articles depuis plus d'un an.
Soutenez le club developpez.com en souscrivant un abonnement pour que nous puissions continuer � vous proposer des publications.
Soutenez le club developpez.com en souscrivant un abonnement pour que nous puissions continuer � vous proposer des publications.