Nouveautés de Visual C++ dans Visual Studio 11 bêta
Ce document présente les fonctionnalités nouvelles et améliorées de Visual C++ dans Visual Studio 2013.
Pour plus d'informations sur d'autres ajouts dans Visual Studio 2013, consultez Nouveautés de Visual Studio 2013.
Prise en charge des normes ISO C/C++ améliorée
Compilateur
Prend en charge les fonctionnalités de langage ISO C++11 suivantes :
Arguments template par défaut pour les modèles de fonction.
Opérateurs de conversion explicite.
Fonctions supprimées.
Fonctions utilisées par défaut.*
Prend en charge les fonctionnalités de langage C99 suivantes :
_Bool
Littéraux composites.
Initialiseurs désignés.
Combinaison de déclarations et de code.
La conversion de littéraux de chaîne en valeurs modifiables peut être interdite en utilisant la nouvelle option du compilateur /Zc:strictStrings.En C++98, la conversion de littéraux de chaîne en char * (et de littéraux de chaîne étendus en wchar_t *) a été déconseillée.En C++11, la conversion a été entièrement supprimée.Bien que le compilateur puisse se conformer strictement à la norme, il propose à la place l'option /Zc:strictStrings qui vous permet de contrôler la conversion.L'option est désactivée par défaut.Notez que lorsque vous utilisez cette option en mode débogage, la bibliothèque STL n'est pas compilée.
Transtypages de référence rvalue/lvalue. Avec les références rvalue, C++11 peut clairement distinguer les valeurs lvalue des valeurs rvalue.Auparavant, le compilateur Visual C++ ne fournissait pas cette distinction dans certains scénarios de transtypage spécifiques.Une nouvelle option du compilateur, /Zc:rvalueCast, a été ajoutée pour rendre le compilateur conforme au document Langages de programmation C++(consultez la section 5.4, [expr.cast]/1).
Le comportement par défaut lorsque cette option n'est pas spécifiée est le même que dans Visual Studio 2012.
[!REMARQUE]
* Pour les fonctions utilisées par défaut, l'utilisation de =default pour demander des opérateurs d'assignation de déplacement et de constructeurs de déplacement membre à membre n'est pas prise en charge.
Bibliothèques C99
Des déclarations et des implémentations sont ajoutées pour les fonctionnalités manquantes dans ces en-têtes : math.h, ctype.h, wctype.h, stdio.h, stdlib.h et wchar.h.On trouve également les nouveaux en-têtes complex.h, stdbool.h, fenv.h et inttypes.h et des implémentations pour toutes les fonctions déclarées dans ceux-ci.Il existe de nouveaux en-têtes de wrapper C++ (ccomplex, cfenv, cinttypes, ctgmath) et plusieurs autres sont mis à jour (ccomplex, cctype, clocale, cmath, cstdint, cstdio, cstring, cwchar et cwctype).Pour plus d'informations, consultez Prise en charge de la bibliothèque C99 dans Visual Studio 2013.
Bibliothèque STL (Standard Template Library)
Prise en charge des opérateurs de conversion explicites C++11, des listes d'initialiseurs, des énumérations délimitées et des modèles variadiques.
Tous les conteneurs prennent désormais en charge les spécifications d'éléments affinées C++11.
Prise en charge des fonctionnalités C++14 suivantes :
« Foncteurs d'opérateurs transparents » less<>, greater<>, plus<>, multiplies<>, et ainsi de suite.
make_unique<T>(args...) et make_unique<T[]>(n)
Fonctions non membres cbegin()/cend(), rbegin()/rend() et crbegin()/crend().
<atomic> a bénéficié de nombreuses améliorations en matière de performances.
<type_traits> a bénéficié de correctifs importants en matière de stabilisation et de code.
Modifications avec rupture
Cette prise en charge améliorée des normes ISO C/C++ peut nécessiter des modifications du code existant afin qu'il soit conforme à C++11 et se compile correctement dans Visual C++ dans Visual Studio 2013.Pour plus d'informations, consultez Modifications avec rupture dans Visual C++.
Pour plus d'informations sur les nouvelles fonctionnalités de langage C++11/14 et STL, consultez Prise en charge des fonctionnalités C++11 (Modern C++) et Fonctionnalités, correctifs et nouveautés STL C++11/14 dans Visual Studio 2013
Améliorations de la bibliothèque Visual C++
SDK C++ REST est ajouté.Il a une implémentation C++ moderne des services REST.Pour plus d'informations, consultez SDK REST C++.
La prise en charge de la texture C++ AMP a été améliorée.Cela inclut désormais la prise en charge des mipmaps et des nouveaux modes d'échantillonnage.
Les tâches PPL prennent en charge plusieurs technologies de planification et le débogage asynchrone.De nouvelles API permettent de créer des tâches PPL pour les résultats normaux et les conditions d'exception.
Performances de l'application C++
Le vectoriseur automatique reconnaît et optimise désormais davantage de modèles C++ pour que votre code s'exécute plus rapidement.
Améliorations de la qualité du code de plateforme ARM et de la micro-architecture Atom.
La convention d'appel __vectorcall est ajoutée.Passez les arguments de type vecteur en utilisant la convention d'appel __vectorcall pour utiliser des registres vectoriels.
Nouvelles options de l'éditeur de liens. Les commutateurs /Gw (compilateur) et /Gy (assembleur) permettent aux optimisations de l'éditeur de liens de produire des fichiers binaires plus légers.
Prise en charge de la mémoire partagée C++ AMP pour réduire ou éliminer la copie de données entre l'UC et le GPU.
Améliorations de l'optimisation guidée par profil :
Améliorations des performances à partir d'une réduction du jeu de travail des applications optimisées à l'aide de l'optimisation guidée par profil.
Nouvelle optimisation guidée par profil pour le développement d'applications Windows Store.
Prise en charge du développement d'applications Windows Store
Prise en charge des types encadrés dans les structs de valeur. Vous pouvez maintenant définir des types de valeurs en utilisant des champs qui peuvent avoir la valeur Null, par exemple IBox<int>^ par opposition à int.Cela signifie que les champs peuvent avoir une valeur ou être égaux à nullptr.
Informations enrichies sur l'exception. C++/CX prend en charge le nouveau modèle d'erreurs Windows qui permet de capturer et de propager des informations d'exception enrichies sur l'interface binaire d'application (ABI) ; cela inclut les piles d'appels et les chaînes de messages personnalisées.
Object::ToString() est désormais virtuel. Vous pouvez maintenant remplacer ToString dans les types de référence du Runtime Windows définis par l'utilisateur.
Prise en charge des API déconseillées. Les API Windows Runtime publiques peuvent maintenant être marquées comme déconseillées. Par ailleurs, vous pouvez leur affecter un message personnalisé qui s'affiche sous forme d'avertissement de build et propose éventuellement des conseils de migration.
Améliorations du débogueur. Prise en charge du débogage interop natif/JavaScript, diagnostic des exceptions Windows Runtime et débogage du code asynchrone (Windows Runtime et PPL).
[!REMARQUE]
Outre les fonctionnalités et améliorations propres à C++ décrites dans cette section, d'autres améliorations dans Visual Studio peuvent également vous aider à écrire de meilleures applications Windows Store.Pour plus d'informations sur ces fonctionnalités, consultez le Guide des fonctionnalités Windows 8.1.Pour plus d'informations sur les nouveaux modèles d'application, consultez Modèles de projet en C#, VB et C++ pour les applications du Windows Store.Pour obtenir la liste des nouvelles fonctionnalités de la plateforme, consultez Windows 8.1 Preview : nouvelles API et fonctionnalités.
Améliorations des diagnostics
Améliorations du débogueur. Prise en charge du débogage asynchrone et du débogage Uniquement mon code.
Catégories d'analyse du code. Vous pouvez maintenant afficher la sortie par catégorie de l'analyseur de code pour vous aider à identifier et à résoudre les erreurs de code.
Diagnostics XAML. Vous pouvez maintenant diagnostiquer les problèmes de réponse de l'interface utilisateur et d'utilisation de la batterie dans votre XAML.
Améliorations des graphiques et du débogage GPU.
Capture et lecture à distance sur de véritables appareils.
Débogage simultané de C++ AMP et de l'UC.
Diagnostic amélioré du runtime C++ AMP.
Débogage de trace de nuanceur de calcul HLSL.
Améliorations des graphiques 3D
Prise en charge de pipeline de contenu d'image pour le format DDS alpha prémultiplié.
L'Éditeur d'images utilise l'alpha prémultiplié en interne pour le rendu, ce qui évite d'effectuer le rendu d'artefacts tels que les halos sombres.
Éditeurs d'images et de modèles. La création d'un filtre défini par l'utilisateur est maintenant prise en charge dans le Concepteur shader de l'Éditeur d'images et de l'Éditeur de modèles.
Environnement IDE et productivité
L'environnement IDE de Visual Studio présente des améliorations significatives pour vous aider à être plus productif lorsque vous écrivez du code en C++.
Mise en forme de code améliorée. Vous pouvez appliquer d'autres paramètres de mise en forme à votre code C++.Avec ces paramètres, vous pouvez contrôler le positionnement sur une nouvelle ligne des accolades et des mots clés, la mise en retrait, l'espacement et le retour à la ligne. Le code est automatiquement mis en forme lorsque vous terminez des instructions et des blocs et lorsque que vous collez le code dans un fichier.Pour modifier les paramètres de mise en forme, dans la barre de menus de Visual Studio, choisissez Outils, Options, développez les nœuds Éditeur de texte, C/C++ et Mise en forme, puis apportez vos modifications.Vous pouvez également utiliser la zone Lancement rapide pour accéder à ces options.
Saisie semi-automatique d'accolade. Le code C++ complète désormais automatiquement les caractères fermants qui correspondent aux caractères ouvrants suivants :
{ (accolade)
[ (crochet)
( (parenthèses)
' (guillemet simple)
" (guillemet double)
Autres fonctionnalités de saisie semi-automatique C++.
Ajoute le point-virgule pour les types de classe.
Effectue une saisie semi-automatique des parenthèses pour les littéraux de chaîne bruts.
Effectue une saisie semi-automatique des commentaires multilignes (/* */)
Rechercher toutes les références résout maintenant automatiquement les références et les filtre en arrière-plan après avoir affiché la liste des correspondances textuelles. Pour désactiver la résolution de référence, dans la barre de menus de Visual Studio, choisissez Outils, Options, développez les nœuds Éditeur de texte, C/C++ et Avancé, puis modifiez le paramètre Désactiver la résolution sous Références.
Pour modifier les paramètres de saisie semi-automatique d'accolade, dans la barre de menus dans Visual Studio, choisissez Outils, Options, développez les nœuds Éditeur de texte, C/C++ et Général, puis apportez vos modifications.Vous pouvez également modifier les paramètres de tous les langages de Visual Studio en développant les nœuds Éditeur de texte, Tous les langages et Général.
Pour modifier des paramètres C++ spécifiques, dans la barre de menus, sélectionnez Outils, Options, développez les nœuds Éditeur de texte, C/C++ et Avancé, puis apportez vos modifications.
Filtrage de la liste des membres basé sur le contexte. Les membres inaccessibles sont filtrés en étant exclus des listes de membres IntelliSense. Par exemple, les membres privés ne sont pas affichés dans la liste des membres, sauf si vous modifiez le code qui implémente le type.Pendant que la liste des membres est ouverte, vous pouvez appuyer sur Ctrl+J pour supprimer un niveau de filtrage (s'applique uniquement à la fenêtre de la liste des membres actifs).Vous pouvez appuyer à nouveau sur Ctrl+J pour supprimer le filtrage textuel et afficher chaque membre.
Défilement de l'aide sur les paramètres. La signature de la fonction affichée dans l'info-bulle d'aide sur les paramètres change à présent selon le nombre de paramètres que vous avez réellement tapés, au lieu d'indiquer simplement une signature arbitraire non mise à jour en fonction du contexte actuel.L'aide relative aux paramètres fonctionne également correctement lorsqu'elle est affichée sur des fonctions imbriquées.
Afficher/masquer fichier d'en-tête/fichier de code. Vous pouvez maintenant basculer entre un en-tête et son fichier de code correspondant à l'aide d'une commande du menu contextuel ou d'un raccourci clavier.
Fenêtre Propriétés de projet C++ redimensionnable.
Génération automatique du code de gestionnaire d'événements en C++/CX et C++/CLI. Lorsque vous tapez du code pour ajouter un gestionnaire d'événements dans un fichier de code C++/CX ou C++/CLI, l'éditeur peut générer automatiquement l'instance de délégué et la définition du gestionnaire d'événements.Une fenêtre d'info-bulle apparaît lorsque le code de gestionnaire d'événements peut être généré automatiquement.
Amélioration de la prise en charge DPI. Le paramètre de prise en charge DPI pour les fichiers manifeste de l'application prend désormais en charge le paramètre « Reconnaissant les résolutions élevées par moniteur ».
Basculement plus rapide entre les configurations. Pour les grandes applications, le basculement entre les configurations, en particulier les opérations de basculement suivantes, s'exécute beaucoup plus rapidement.
Efficacité du temps de build.
- Builds plus rapides. De nombreuses optimisations et l'utilisation de cœurs multiples rendent les builds plus rapides, en particulier pour les grands projets.Les builds incrémentielles des applications C++ possédant des références à C++ WinMD sont également plus rapides.
Pour plus d'informations sur les autres ajouts et améliorations de l'environnement IDE, consultez Nouveautés de Visual Studio 2013 et les autres articles en référence.
Voir aussi
Concepts
Nouveautés de Visual Studio 2013