Nouveautés de Visual C++ dans Visual Studio 2012
Ce document présente les fonctionnalités nouvelles et améliorées dans Visual C++ dans Visual Studio 2012.
Pour plus d'informations sur d'autres ajouts dans Visual Studio 2012, consultez Nouveautés de Visual Studio 2012.
[!REMARQUE]
Pour plus d'informations sur les fonctionnalités de (IDE) de l'environnement de développement intégré pour les développeurs qui créent des applications d' Windows Store, consultez Développez des applications de mémoire windows à l'aide de Visual Studio 2012.
Prise en charge améliorée des normes C++11
Bibliothèque STL (Standard Template Library)
Prise en charge du nouvel En-têtes STL: <atomic>, <chrono>, <condition_variable>, <filesystem>, <future>, <mutex>, <ratio>, et <thread>.
Pour optimiser l'utilisation des ressources mémoire, les conteneurs sont maintenant plus petits.Par exemple, en mode de version finale x86 avec les paramètres par défaut, std::vector barré de 16 octets dans Visual Studio 2010 à 12 octets dans Visual Studio 2012, et std::map barré de 16 octets dans Visual Studio 2010 à 8 octets dans Visual Studio 2012.
Autorisée mais non requis par le C++11 standard, les itérateurs EFFRAYANTS ont été implémentés.Pour plus d'informations, consultez le document PDF Assignation et initialisation EFFRAYANTS itérateur.
D'autres améliorations C++11
Basé sur une plage des boucles. Vous pouvez écrire des boucles plus fiables qui s'exécutent avec les tableaux, les conteneurs STL, et des collections d' Windows Runtime dans le formulaire for (for-range-declaration :expression ).Ce fait partie de la principale prise en charge.Pour plus d'informations, consultez Basé sur une plage, instruction (C++).
Lambdas sans état, qui sont des blocs de code qui commencent par un introducteur vide lambda [] et ne capturent aucune variable locale, sont maintenant implicitement convertible aux pointeurs fonction selon les exigences de la norme C++11.Pour plus d'informations, consultez Expressions lambda en C++.
Prise en charge des énumérations de Portée. L'enum- clés C++ enum class est maintenant prise en charge.Le code suivant montre comment cette enum- clé diffère du comportement précédent d' enum .
enum class Element { Hydrogen, Helium, Lithium, Beryllium }; void func1(Element e); func1(Hydrogen); // error C2065: 'Hydrogen' : undeclared identifier func1(Element::Helium); // OK
prise en charge du développement d' ApplicationsWindows Store
Modèle d'interface utilisateur XAML basé sur natif. Pour les applications d' Windows Store, vous pouvez utiliser le modèle d'interface utilisateur basée XAML nouveau par natif.Pour plus d'informations, consultez Didacticiel : Créez votre première application de mémoire windows à l'aide de C++.
Extensions de composant Visual C++. Ces extensions simplifient la consommation des objets d' Windows Runtime, qui sont une partie nécessaire d'applications d' Windows Store .Pour plus d'informations, consultez Le calendrier de lancement pour windows stockent des applications à l'aide de C++ et Visual C++ référence du langage (C++/CX)
Jeu DirectX. Vous pouvez développer des jeux de engageants à l'aide de le nouveau prise en charge de DirectX des applications d' Windows Store .Pour plus d'informations, consultez Créez votre premier jeu de mémoire windows en utilisant DirectX et Développement du labyrinthe de marbre, les fenêtres signalent le jeu en C++ et le DirectX.
Les applications de**XAML/DirectX d'interopérabilité.**Windows Store qui utilisent XAML et DirectX maintenant interagissent efficacement.
Windows Runtime Développement composant de DLL. Le développement composant de DLL rend l'environnement d' Windows Runtime extensible.Pour plus d'informations, consultez Le calendrier de lancement pour windows stockent des applications à l'aide de C++ et Créer des composants d'exécution windows en C++.
Compilateur et Éditeur de liens Visual C++
Auto - vectorizer. Le compilateur analyse des boucles dans votre code et, dans la mesure du possible, émet des instructions qui utilisent les registres vectoriels et les instructions qui sont présents dans tous les processeurs modernes.Cela rend les boucles s'exécuter plus rapidement.(Les instructions de processeur sont appelées SSE, pour les extensions Streaming SIMD).Vous ne devez pas activer ou demander cette optimisation car elle s'applique automatiquement.
Auto - parallelizer. Le compilateur peut analyser des boucles dans votre code et émettre des instructions qui étalent les calculs sur plusieurs processeurs ou cœurs.Cela peut entraîner des boucles s'exécuter plus rapidement.Vous devez demander cette optimisation car elle n'est pas activée par défaut.Dans de nombreux cas, elle permet d'inclure #pragma loop(hint_parallel(N)) dans votre code juste avant les boucles que vous souhaitez parallélisé.
Auto - vectorizer et auto - parallelizer peuvent travailler ensemble afin que les calculs sont étalés entre plusieurs cœurs et le code sur les utilisations de chaque cœur que son vecteur sont enregistrées.Pour plus d'informations, consultez Erreurs et avertissements d'Automobile-Parallélisation.
Nouveau dans Visual Studio 2012 Update 1
Windows XP cible lorsque vous générez votre code C++.
Vous pouvez utiliser le compilateur Visual C++ et les bibliothèques pour cibler Windows XP et Windows Server 2003.Pour plus d'informations, consultez Configuration des programmes C++ 11 pour Windows XP.
Prise en charge de la programmation parallèle
Parallélisme massif accéléré par C++ (AMP)
C++ ampère d'accélérer l'exécution de votre code C++ en tirant parti du matériel de données parallèle qui est normalement présent comme GPU sur une carte graphique discrète.Le modèle de programmation C++ AMP inclut la prise en charge des tableaux multidimensionnels, de l'indexation, du transfert de mémoire, du tiling ,et une bibliothèque de fonctions mathématiques.En utilisant les extensions de langage C++ ampère et des restrictions de compilateur, vous pouvez contrôler la façon dont les données sont déplacées de l'UC au GPU et en arrière.Pour plus d'informations, consultez C++ AMP (C++ Accelerated Massive Parallelism).
C++ accélération a le parallélisme massif (AMP) qui débogue et profilage
Débogage. L'expérience de débogage pour les applications qui utilisent ampère C++ pour cibler le GPU est comme le débogage pour d'autres applications C++.Cela inclut les nouveaux ajouts parallèles de débogage qui ont été mentionnés précédemment.Consultez Débogage du code GPU.
Profiler. Il profile maintenant en charge de l'activité de GPU basé sur ampère C++ et d'autres modèles de programmation de Direct3D-based.Consultez Graphique d'activité GPU.
Améliorations générales de programmation parallèle
Avec le matériel déplaçant les architectures multicœurs et du beaucoup- cœur, les développeurs peuvent plus se reposer sur des vitesses d'horloge toujours croissantes des cœurs unique.La prise en charge de la programmation parallèle dans Concurrency Runtime permet aux développeurs de tirer parti de ces nouvelles architectures.
Dans Visual Studio 2010, les bibliothèques puissantes de parallélisation C++ comme Bibliothèque de modèles parallèles ont été ajoutées, avec des fonctionnalités pour tirer parti de l'accès concurrentiel en exprimant des pipelines sophistiqués de flux de données.Dans Visual Studio 2012, ces bibliothèques ont été étendues pour fournir de meilleures performances, plus de contrôle, et en charge plus riche des modèles parallèles que les développeurs ont besoin de la plupart.La largeur d'offrir maintenant inclut :
Les nombreuses tâche- est basé sur le modèle de programmation qui prend en charge asynchrony et des suites.Pour plus d'informations, consultez Parallélisme des tâches (runtime d'accès concurrentiel).
Algorithmes parallèles, qui prennent en charge le parallélisme bifurcation-jointure (parallel_for, parallel_for avec l'affinité, parallel_for_each, parallel_sort, parallel_reduce, parallel_transform).
conteneurs d'Accès concurrentiel, qui fournissent des versions thread-safe des structures de données d' std telles que priority_queue, queue, vector, et map.
Bibliothèque d'agents asynchrones, les développeurs peuvent utiliser pour exprimer les pipelines de flux de données qui se décomposent naturellement en unités simultanées.
Un planificateur et un gestionnaire de ressources personnalisables pour faciliter la composition lissée des modèles dans cette liste.Consultez Planificateur de tâches (runtime d'accès concurrentiel).
Améliorations parallèles générales de débogage
En plus de la fenêtre Tâches parallèles et de la fenêtre Piles parallèles, Visual Studio 2012 offre une nouvelle fenêtre Espion parallèle afin que vous puissiez examiner les valeurs d'une expression dans tous les threads et processus, et exécute le tri et le filtrage sur le résultat.Vous pouvez également utiliser vos propres visualiseurs pour étendre la fenêtre, et vous pouvez tirer parti du nouveau en charge multithread entre toutes les fenêtres Outil.Pour plus d'informations, consultez Comment : utiliser la fenêtre Espion parallèle.
IDE
Les outils dans l'IDE de Visual Studio sont des améliorations significatives pour vous aider à améliorer votre productivité lorsque vous codez en C++.Pour plus d'informations sur les améliorations de l'IDE, consultez Éléments phares de Visual Studio 2012.
Prise en charge des modèles Visual Studio. Vous pouvez maintenant utiliser la technologie de modèles Visual Studio pour créer le projet C++ et modèles d'élément.
Chargement asynchrone de solution. Les projets sont maintenant les parties fondamentales chargées d'asynchronously-the de la solution première - ce que vous pouvez commencer à s'exécuter plus rapidement.
Déploiement automatisé pour le débogage distant. Le déploiement des fichiers pour le débogage distant dans Visual C++ a été simplifiée.L'option de déploiement dans le menu contextuel du projet copie automatiquement à l'ordinateur distant les fichiers spécifiés dans les propriétés de configuration de débogage.Copier les fichiers manuellement à l'ordinateur distant n'est plus nécessaire.Pour plus d'informations, consultez Débogage à distance d'un projet généré localement.
C++/CLI Intellisense. C++/CLI a désormais la prise en charge complète d'IntelliSense.Les fonctionnalités Intellisense telles que l'info express, l'aide de paramètres, les membres de liste, et la saisie semi-automatique s'exécutent maintenant de C++/CLI.En outre, l'autre Intellisense et améliorations de l'IDE répertoriés dans ce document s'exécutent également de C++/CLI.
Les info-bulles plus riches Intellisense. Les info-bulles info express C++ Intellisense affichent maintenant des informations plus complètes de style de commentaires de documentation XML.Si vous utilisez une API d'un bibliothèque- pour l'exemple, C++ Ampère- que les commentaires de documentation XML, l'info-bulle Intellisense affiche plus d'informations que la déclaration.De plus, si votre code contient les commentaires de documentation XML, des info-bulles Intellisense affichent des informations plus complètes.
Éléments de code C++. Le code squelette est disponible pour le commutateur, if-else, de la boucle, et d'autres constructions de code de base, dans la liste déroulante liste des membres.Sélectionnez un fragment de code de la liste pour l'insérer dans votre code puis pour compléter la logique requise.Vous pouvez également créer vos propres segments de code personnalisés à utiliser dans l'éditeur.Pour plus d'informations, consultez Extraits de code.
Améliorations liste des membres. La liste déroulante liste des membres s'affiche automatiquement comme vous le code de type dans l'éditeur de code.Les résultats sont filtrés, afin que seuls les membres appropriés sont affichés à mesure que vous tapez.Vous pouvez contrôler le type de filtrage la logique utilisée par le membre Liste- dans la boîte de dialogue Options sous Éditeur de texte, C/C++, Avancé.Pour plus d'informations, consultez Utilisation de la fonctionnalité IntelliSense.
Colorisation sémantique. Les types, les énumérations, les macros, et d'autres jetons C++ ont désormais la colorisation par défaut.Pour plus d'informations, consultez Écriture de code dans l'éditeur de code et de texte.
La mise en surbrillance de référence. Sélectionner un symbole met en surbrillance maintenant toutes les instances du symbole dans le fichier actif.Appuyez sur la flèche de Ctrl+Shift+Up ou la flèche de Ctrl+Shift+Down pour vous déplacer entre les références mises en surbrillance.Vous pouvez désactiver cette fonctionnalité désactivé dans la boîte de dialogue Options, sous Éditeur de texte, C/C++, Avancé.
Outils de gestion du cycle de vie des applications
Analyse de code statique
L'analyse statique pour C++ a été mise à jour pour fournir des informations de contexte plus riches d'erreur, plus de règles d'analyse, et meilleurs résultats d'analyse.Dans la nouvelle fenêtre Analyse du code, vous pouvez filtrer les messages par mot clé, projet, et gravité.Lorsque vous sélectionnez un message dans la fenêtre, la ligne dans le code où le message a été déclenché est mise en surbrillance dans l'éditeur de code.Pour certains avertissements C++, le message répertorie les lignes sources qui indiquent le chemin d'exécution qui conduit à l'avertissement ; points de décision et les raisons pour prendre que le chemin d'accès spécifique sont mis en surbrillance.
L'analyse du code est incluse dans la plupart des éditions d' Visual Studio 2012.Dans project professional, les éditions premium et ultimate, les règles sont incluses.Dans les éditions Express de Windows 8 les fenêtres et téléphonez, uniquement les avertissements les plus critiques sont inclus.L'analyse du code n'est pas inclus dans l'édition Express pour le Web.
Voici quelques autres améliorations d'analyse du code :
Les nouveaux avertissements d'accès concurrentiel vous permettent d'éviter des bogues d'accès concurrentiel en s'assurant que vous utilisez des disciplines correctes de verrouillage dans les programmes multithread de C/C++.L'analyse des violations de verrouillage détecte les conditions de concurrence critique, les inversions de commande de verrouillage, contrat potentiels de l'appelant/appelé, les opérations incompatibles de synchronisation, et d'autres bogues d'accès concurrentiel.
Vous pouvez spécifier C++ règles que vous souhaitez appliquer aux opérations d'analyse du code à l'aide de les ensembles de règles.
Dans la fenêtre Analyse du code, vous pouvez insérer dans le code source un pragma qui supprime un avertissement sélectionné.
Vous pouvez améliorer l'exactitude et l'exhaustivité de l'analyse statique du code à l'aide de la nouvelle version d' Langage d'annotation du code source Microsoft (SAL) pour décrire comment une fonction utilise ses paramètres, les hypothèses qu'il effectue sur eux, et les garanties qu'elle fait lorsqu'elle se termine.
Prise en charge des projets de 64bit C++.
Pour plus d'informations sur l'amélioration de la qualité de votre code, consultez l' Analyse de la qualité des applications à l'aide des outils d'analyse du code.
Infrastructure mise à jour de test unitaire
Utilisez la nouvelle infrastructure de test unitaire C++ dans Visual Studio pour écrire des tests unitaires C++.Ajoutez un nouveau projet de test unitaire à votre solution existante C++ en recherche le modèle Projet de test unitaire C++ sous la catégorie Visual C++ dans la boîte de dialogue Nouveau projet .Commencez à écrire vos tests unitaires dans le stub généré à partir de code d' TEST_METHOD dans Unittest1.cpp le fichier.Lorsque le code de test est écrit, générez la solution.Lorsque vous souhaitez exécuter des tests, ouvrez une fenêtre Explorateur de tests unitaires en choisissant Afficher, Autres fenêtres, Explorateur de tests unitaires, puis, dans le menu contextuel du cas de test que vous souhaitez, choisissez Exécuter le test sélectionné.Une fois la série de tests terminée, vous pouvez afficher les résultats des tests et les autres informations de trace de pile dans la même fenêtre.Consultez Vérification du code à l'aide de tests unitaires et Création et exécution de tests unitaires sur une application Windows Store.
Graphiques de dépendance d'architecture
Pour mieux comprendre votre code, vous pouvez maintenant générer des graphiques de dépendance pour le fichier binaire, la classe, l'espace de noms, les fichiers Include dans une solution.Dans la barre de menus, sélectionnez Architecture, Générer un graphique de dépendance, puis Pour la solution ou Pour le fichier Include pour générer un graphique de dépendance.Lorsque la génération du graphique est terminée, vous pouvez explorer l'en développant chaque nœud, apprenez les relations de dépendance en déplaçant entre les nœuds, et recherchez le code source en choisissant Afficher le contenu dans le menu contextuel pour un nœud.Pour générer un graphique de dépendance pour les fichiers Include, dans le menu contextuel pour un fichier de code source d' *.cpp ou un fichier d'en-tête *.h, choisissez Générer le graphique des fichiers Include.Consultez Visualiser des dépendances de code sur les graphiques de dépendance.
Navigateur de l'architecture
À l'aide de le navigateur de l'architecture, vous pouvez explorer les ressources dans votre solution, projets, ou fichiers C++.Dans la barre de menus, sélectionnez Architecture, Fenêtres, Navigateur de l'architecture.Vous pouvez sélectionner un nœud qui vous intéresse, par exemple, Affichage de classes.Dans ce cas, le côté droit de la fenêtre Outil est développé avec une liste des espaces de noms.Si vous sélectionnez un espace de noms, une nouvelle colonne affiche une liste des classes, des structures, des enums dans cet espace de noms.Vous pouvez continuer à explorer ces ressources, ou revenez à la colonne de gauche l'extrême gauche pour démarrer une autre requête.Consultez Rechercher du code avec le navigateur de l'architecture.
Couverture du code
La couverture du code a été mise à jour pour instrumenter des fichiers binaires dynamiquement au moment de l'exécution.Cela déplace la charge mémoire de configuration et fournit de meilleures performances.Vous pouvez également collecter des données de couverture du code des tests unitaires pour l'application C++.Pour plus d'informations sur la création et les tests unitaires exécutés, consultez la section de l'infrastructure de test unitaire de ce document.Lorsque vous avez créé des tests unitaires pour C++, vous pouvez utiliser Explorateur de tests unitaires pour découvrir les tests de votre solution.Pour exécuter les tests unitaires et collecter des données de couverture du code pour eux, dans Explorateur de tests unitaires, choisissez Analyser la couverture du code.Vous pouvez examiner les résultats de la couverture du code dans Résultats de la couverture du code fenêtre- sur la barre de menus, sélectionnez Test, Fenêtres, Résultats de la couverture du code.Consultez Utilisation de la couverture du code pour déterminer la quantité de code testé.
Voir aussi
Concepts
Nouveautés de Visual Studio 2012