Neues über Visual C++ in Visual Studio 2012

In diesem Dokument werden die neuen und verbesserten Funktionen in Visual C++ in Visual Studio 2012 vor.

Informationen zu anderen Hinzufügungen in Visual Studio 2012, finden Sie unter Neues in Visual Studio 2012.

HinweisHinweis

Informationen zu Funktionen der integrierten Entwicklungsumgebung (IDE) für Entwickler, die Windows Store-App erstellen, finden Sie unter Entwickeln Sie Windows Store-Apps mit Visual Studio 2012s.

Verbesserte Unterstützung der Standard-C++11

Hh409293.collapse_all(de-de,VS.110).gifStandard Template Library

  • Unterstützung für neue STL-Header: <atomic>, <chrono>, <condition_variable>, <filesystem>, <future>, <mutex>, <ratio> und <thread>.

  • Um Speicherressourcenverwendung optimieren, sind Container jetzt kleiner.Beispielsweise in x86-Releasemodus mit Standardeinstellungen, hat std::vector von 16 Bytes in Visual Studio 2010 auf 12 Bytes in Visual Studio 2012 verkleinert wird, und std::map hat von 16 Bytes in Visual Studio 2010 auf 8 Bytes in Visual Studio 2012 verkleinert wird.

  • Wie erlaubt aber nicht vom standardmäßigen C++11 erforderlich sind, FURCHTSAME Iteratoren implementiert.Weitere Informationen finden Sie im PDF-Dokument FURCHTSAME Iterator-Zuweisung und Initialisierung.

Hh409293.collapse_all(de-de,VS.110).gifAndere Erweiterungen C++11

  • Bereichsbasiert für Schleifen. Sie können robustere Schleifen schreiben, die mit Arrays, STL-Containern und Windows-Runtime-Auflistungen in der Form for (for-range-declaration:expression) arbeiten.Dies ist ein Teil der Kern-Sprachunterstützung.Weitere Informationen finden Sie unter Bereichsbasiert für Anweisung (C++).

  • Zustandslose Lambdas, die Codeblöcke sind, die mit einem leeren Lambda-Einleitungszeichen [] starten und keine lokalen Variablen aufzeichnen, sind jetzt implizit in diesen zu den Funktionszeigern wie von dem Standard C++11 erforderlich.Weitere Informationen finden Sie unter Lambda-Ausdrücke in C++.

  • Durch bewertete Enumerationsunterstützung. Die EnumerationTaste C++ enum class wird jetzt unterstützt.Der folgende Code zeigt, wie diese EnumerationTaste von vorhergehendem enum Verhalten unterscheidet.

    enum class Element { Hydrogen, Helium, Lithium, Beryllium };
    void func1(Element e);
    func1(Hydrogen); // error C2065: 'Hydrogen' : undeclared identifier
    func1(Element::Helium); // OK
    

Windows Store-App-Entwicklungs-Unterstützung

Visual C++-Compiler und -Linker

  • Automatische Vektorisierung. Der Compiler analysiert Schleifen im Code und ausgibt, nach Möglichkeit Anweisungen, die die Vektorregister und) verwenden, die in allen modernen Prozessoren vorhanden sind.Dadurch können die Schleifen schneller ausgeführt werden.(Die Prozessoranweisungen wird als SSE, für Streaming SIMD-Erweiterungen).Sie müssen um diese Optimierung nicht aktivieren oder anfordern, da sie automatisch angewendet wird.

  • Automatische Parallelisierung. Der Compiler kann Schleifen im Code analysieren und - Anweisungen, die die Berechnungen über mehrere Prozessoren oder Kerne weitergeben.Dies kann die Schleifen schneller ausgeführt werden können.Sie müssen um diese Optimierung anfordern, da sie standardmäßig nicht aktiviert ist.In vielen Fällen ist es, #pragma loop(hint_parallel(N)) im Code direkt vor den Schleifen einzuschließen, die Sie parallelisiertes soll.

    Die automatische Vektorisierung und die automatische Parallelisierung können zusammenarbeiten, um Berechnungen über mehrere Kerne und dem Code auf dem jedes Kerns seine Vektorregister weitergegeben werden.Weitere Informationen finden Sie unter AUTO-Parallelisierung Fehler und Warnungen.

Neu in Visual Studio 2012 Update 1

  • Richten Sie Windows XP an, wenn Sie den C++-Code erstellen.

    Sie können den Visual C++-Compiler und - Bibliotheken verwenden, um Windows XP und Windows Server 2003 festzulegen.Weitere Informationen finden Sie unter Konfigurieren von C++ 11-Programmen für Windows XP.

Unterstützung der parallelen Programmierung

Hh409293.collapse_all(de-de,VS.110).gifC++ beschleunigte enorme Parallelität (AMP)

C++-AMP beschleunigt die Ausführung des C++-Code bereit, indem die Daten-parallele Hardware nutzt, die normalerweise als GPU auf einer einzelnen Grafikkarte vorhanden ist.Das C++-AMPprogrammiermodell umfasst mehrdimensionale Arrays, die Indizierung, Arbeitsspeicher-Übertragung, Tiling und eine mathematische Funktionsbibliothek.Mit C++-AMPsprachenerweiterungen und Compilereinschränkungen verwenden, können Sie steuern, wie Daten aus der CPU zum GPU und auf die Rückseite verschoben werden.Weitere Informationen finden Sie unter C++ AMP (C++ Accelerated Massive Parallelism).

Hh409293.collapse_all(de-de,VS.110).gifC++ beschleunigte enormes Debuggen und Profilerstellung der Parallelitäts-(AMP)

Debuggen. Die Debugleistung für App, die C++-AMP verwenden, um das GPU festzulegen, entspricht das Debuggen für andere C++-Apps.Dies schließt die neuen parallelen Debuggingshinzufügungen ein, die bereits erwähnt wurden.Siehe Debuggen von GPU-Code.

Profilerstellung. Erstellt jetzt Unterstützung für GPU-Aktivität ein Profil, die auf Grundlage C++-AMP und andere Direct3D-based Programmiermodelle ist.Siehe GPU-Aktivitätsdiagramm.

Hh409293.collapse_all(de-de,VS.110).gifAllgemeine Erweiterungen der parallelen Programmierung

Wenn die Hardware auf mehreren und VielKernarchitekturen bewegt, können Entwickler auf ständig steigenden Taktfrequenzen von den EinzelKernen nicht mehr benötigen.Die Unterstützung der parallelen Programmierung in Concurrency Runtime ermöglicht Entwicklern, um diese neuen Architekturen zu nutzen.

In Visual Studio 2010 wurden leistungsstarke C++-Parallelisierungsbibliotheken wie Parallel Patterns Library, zusammen mit Funktionen eingeführt, um die Parallelität zu nutzen durch das Ausdrücken von ausgereiften Datenflusspipelines.In Visual Studio 2012 sind diese Bibliotheken erweitert, um eine bessere Leistung, mehr Kontrolle und umfangreichere Unterstützung für die Ähnlichkeitsmuster zu ermöglichen, die Entwickler die meisten benötigen.Die Breite des nun bieten umfasst:

  • Ein umfangreiches aufgabenbasiertes Programmiermodell, das asynchrony und Fortsetzungen unterstützt.Weitere Informationen finden Sie unter Aufgabenparallelität (Concurrency Runtime).

  • Parallele Algorithmen, die ZweigJoinparallelität unterstützen (parallel_for, parallel_for mit Affinität, parallel_for_each, parallel_sort, parallel_reduce, parallel_transform).

  • Parallelitätssiche Container, die threadsichere Versionen von std Datenstrukturen wie priority_queue, queue, vector und map bereitstellen.

  • Asynchronous Agents Library, die Entwickler verwenden können, um Datenflusspipelines auszudrücken, die natürlich in gleichzeitige Einheiten zerlegen.

  • Ein anpassbarer Planer und ein Ressourcen-Manager, um die glatter Zusammensetzung der Muster dieser Liste zu erleichtern.Siehe Taskplaner (Concurrency Runtime).

Hh409293.collapse_all(de-de,VS.110).gifAllgemeine parallele Debuggen von Erweiterungen

Zusätzlich zum Fenster Parallele Aufgaben und zu Fenster Parallele Stapel bietet Visual Studio 2012 ein neues Fenster Parallele Überwachung, sodass Sie die Werte eines Ausdrucks über alle Threads und Prozessen überprüfen können, an und führt Sortierung und Filterung auf dem Ergebnis aus.Sie können eigene Schnellansichten auch verwenden, um das Fenster zu erweitern, und Sie können die neue MULTIProzessunterstützung zu allen Toolfenstern nutzen.Weitere Informationen finden Sie unter Gewusst wie: Verwenden des parallelen Überwachungsfensters.

IDE

Die Tools in der Visual Studio-IDE haben die erheblichen Verbesserungen, die Sie bei, produktiver zu sein, wenn Sie in C++ codieren.Weitere Informationen zu IDE-Erweiterungen, finden Sie unter Produkthighlights für Visual Studio 2012.

  • Visual Studio-Vorlagenunterstützung. Sie können Visual Studio-Vorlagentechnologie jetzt verwenden, um Projekt- und Elementvorlagen C++ zu erstellen.

  • Asynchrone Projektmappen-Last. Projekte sind jetzt geladene asynchronously-the Hauptkomponenten der ersten--so Lösung, die Sie für ein schnelleres beginnen können.

  • Automatisierte Bereitstellung für das Remotedebuggen. Bereitstellung von Dateien für das Remotedebuggen in Visual C++ vereinfacht worden ist.Die Bereitstellensoption im Kontextmenü des Projekts kopiert automatisch auf den Remotecomputer die Dateien, die in den Debugkonfigurationseigenschaften angegeben werden.Das Kopieren von Dateien manuell auf den Remotecomputer wird nicht mehr benötigt.Weitere Informationen finden Sie unter Remotedebuggen eines lokal erstellten Projekts.

  • C++/CLI IntelliSense. C++/CLI hat nun vollständige IntelliSense-Unterstützung.IntelliSense-Features wie QuickInfo, Parameter-Hilfe, auflisten und automatische Vervollständigung funktionieren nun für C++/CLI.Außerdem funktionieren andere IntelliSense und IDE-Erweiterungen, die in diesem Dokument aufgeführten, auch für C++/CLI.

  • Umfangreichere IntelliSense-QuickInfo. QuickInfo C++ IntelliSense zeigen jetzt umfangreichere XML-Dokumentationskommentarformatinformationen an.Wenn Sie ein - API eines Bibliothek-für Beispiel verwenden, zeigt C++, Amp-dass XML-Dokumentationskommentare hat, dann die IntelliSense-QuickInfo mehr Informationen als nur die Deklaration an.Wenn der Code die XML-Dokumentationskommentare verfügt, zeigen IntelliSense-QuickInfo die umfangreicheren Informationen an.

  • C++-Codekonstrukte. Skelettcode ist für Schalter, if-else, For-Schleife und andere grundlegende Codekonstrukte, in der Listen-Memberdropdownliste verfügbar.Wählen Sie ein Codeelement aus der Liste aus, um sie in den Code einzufügen und die erforderliche Logik dann auszufüllen.Sie können eigene benutzerdefinierte Abschnitte des Codes im - Editor auch erstellen.Weitere Informationen finden Sie unter Codeausschnitte.

  • Listen-Member-Erweiterungen. Die Listen-Memberdropdownliste wird automatisch angezeigt, während Sie Code in den Code-Editor eingeben.Ergebnisse werden so gefiltert, dass nur relevante Member angezeigt werden, während Sie eingeben.Sie können die Art der Filterlogik steuern, die vom Member Liste-im Dialogfeld Optionen unter Text-Editor, C/C++, Erweitert verwendet wird.Weitere Informationen finden Sie unter Verwenden von IntelliSense.

  • Semantischer Einfärbung. Typen, Enumerationen, Makros und andere C++-Token haben jetzt Einfärbung standardmäßig.Weitere Informationen finden Sie unter Schreiben von Code im Code- und Text-Editor.

  • Verweishervorhebung. Ein Symbol auswählen, werden jetzt alle Instanzen des Symbols in der aktuellen Datei hervor.Drücken Sie STRG+UMSCHALT+NACH-UNTEN bzw. STRG+UMSCHALT+NACH-OBEN zur Verschiebung unter den markierten Verweisen.Sie können diese Funktion deaktivieren Optionen im Dialogfeld, unter Text-Editor drehen, C/C++, Erweitert.

Anwendungslebenszyklus-Verwaltungs-Tools

Hh409293.collapse_all(de-de,VS.110).gifStatische Codeanalyse

Statische Analyse für C++ wurde aktualisiert, um umfangreichere Fehlerkontextinformationen, mehr Analyseregeln und bessere Analyseergebnisse bereitzustellen.Im neuen Fenster Codeanalyse können Sie Meldungen nach Schlüsselwort, Projekt- und Schweregrad filtern.Wenn Sie eine Meldung im Fenster auswählen, wird die Zeile im Code, in dem die Meldung ausgelöst wurde, im Code-Editor hervorgehoben.Für bestimmte C++-Warnungen führt die Nachrichtenlistenquellzeilen, die den Ausführungspfad anzeigen, das an die Warnung; Entscheidungspunkte und die Gründe für das Erstellen, dass bestimmter Pfad hervorgehoben werden.

Die Codeanalyse wird in den meisten Editionen von Visual Studio 2012 enthalten.In Professional, Premium in und in die endgültige Editionen werden alle Regeln enthalten.In den Express-Editionen für Windows 8 und Windows Phone, so werden die wichtigsten Warnungen enthalten.Die Codeanalyse wird in der Express Edition nicht für Internet enthalten.

Im Folgenden einige andere Codeanalyseerweiterungen:

  • Neue Parallelitätswarnungen helfen Ihnen, Parallelitätsfehler zu vermeiden, indem Sie sicherstellen, dass Sie die richtigen Sperrendisziplinen in sechs C/C++-Programmen verwenden.Der Analyzer Vertragsverletzungen erkennt möglichen Racebedingungen, Sperrenreihenfolgenumstellungen, der Anrufer-/Personensperre, nicht übereinstimmende Synchronisierungsoperationen und andere Parallelitätsfehler.

  • Sie können C++ angeben anordnen, dass Sie auf Codeanalyse anwenden möchten, indem Sie Regelsätze verwenden.

  • Im Fenster Codeanalyse können Sie in den Quellcode ein - Pragma einfügen, das eine ausgewählte Warnung unterdrückt.

  • Sie können die Genauigkeit und die Vollständigkeit der statischen Codeanalyse erhöhen, indem Sie die neue Version Microsoft-Quellcodeanmerkungssprache (SAL) verwenden, um zu beschreiben, wie eine Funktion seine Parameter verwendet, der Annahmen, die sie über sie macht, und der dadurch, dass sie macht, wenn sie beendet.

  • Unterstützung für Projekte 64bit C++.

Weitere Informationen dazu, wie Sie die Qualität des Codes, finden Sie unter Analysieren der Anwendungsqualität mit Codeanalysetools verbessert.

Hh409293.collapse_all(de-de,VS.110).gifDas Komponententestframework

Verwenden Sie das neue C++-Komponententest-Framework in Visual Studio, um C++-Komponententests zu schreiben.Fügen Sie ein neues Komponententestprojekt der vorhandenen C++-Projektmappe hinzu, indem Sie die C++-Komponententestprojekt Vorlage unter der Kategorie Visual C++Neues Projekt im Dialogfeld suchen.Starten Sie das Schreiben der Komponententests im generierten TEST_METHOD Codestub Unittest1.cpp in der Datei.Wenn der Testcode geschrieben wird, erstellen Sie die Projektmappe.Wenn Sie die Tests ausführen möchten, öffnen Sie ein Fenster, Komponententest-Explorer, indem Sie Ansicht, Weitere Fenster, Komponententest-Explorer, und klicken Sie dann im Kontextmenü für den Testfall, den Sie auswählen möchten, wählen Sie Ausgewählten Test ausführen aus.Nachdem der Testlauf beendet wurde, Sie Testergebnisse und zusätzliche Stapelüberwachungsinformationen im gleichen Fenster anzeigen können.Weitere Informationen finden Sie unter Überprüfen von Code mithilfe von Komponententests und Erstellen und Ausführen von Komponententests auf einer Windows Store-App.

Hh409293.collapse_all(de-de,VS.110).gifArchitektur-Abhängigkeits-Diagramme

Um den Code besser zu verstehen, können Sie Abhängigkeitsdiagramme für die Binärdatei, die Klasse, den Namespace und die Dateien in einer Projektmappe jetzt generieren.Wählen Sie auf der Menüleiste Sie Architektur, Abhängigkeitsdiagramm generieren und dann Für Projektmappe oder Für Includedatei, um ein Abhängigkeitsdiagramm zu generieren.Wenn die Diagrammgenerierung abgeschlossen ist, können Sie sie, indem Sie jeden Knoten untersuchen erweitern, erfahren Abhängigkeitsbeziehungen, indem Sie zwischen Knoten verschieben, und Quellcode navigieren, indem Sie Inhalt anzeigen im Kontextmenü für einen Knoten auswählen.Um ein Abhängigkeitsdiagramm für Includedateien, im Kontextmenü für eine *.cpp Quellcodedatei oder eine *.h Headerdatei zu generieren, wählen Sie Diagramm für Includedateien generieren.Siehe Visualisieren von Codeabhängigkeiten in Abhängigkeitsdiagrammen.

Hh409293.collapse_all(de-de,VS.110).gifArchitektur-Explorer

Mit dem Architektur-Explorer verwenden, können Sie die Ressourcen in der C++-Projektmappe, -Projekten oder - dateien untersuchen.Klicken Sie auf der Menüleiste wählen Sie Architektur, Fenster, Architektur-Explorer aus.Sie können einen Knoten, der Sie interessiert beispielsweise Klassenansicht auswählen.In diesem Fall wird die rechte Seite des Toolfensters mit einer Liste von Namespaces erweitert.Wenn Sie einen Namespace auswählen, wird eine neue Spalte eine Liste von Klassen, Strukturen und Enumerationen in diesem Namespace an.Sie können weiterhin, um diese Ressourcen zu untersuchen, oder wechseln Sie zur Spalte auf den sich ganz links, um eine andere Abfrage zu starten.Siehe Suchen von Code im Architektur-Explorer.

Hh409293.collapse_all(de-de,VS.110).gifCodeabdeckung

Codeabdeckung wurde aktualisiert, um Binärdateien zur Laufzeit dynamisch zu instrumentieren.Dieses senkt den Konfigurationsmehraufwand und bietet eine bessere Leistung.Sie können Codeabdeckungsdaten von den Komponententests für C++-App erfassen.Weitere Informationen dazu, wie und Komponententests finden Sie im Komponententest-Framework-Abschnitt dieses Dokuments erstellt.Wenn Sie C++-Komponententests erstellt haben, können Sie Komponententest-Explorer verwenden, um Tests in der Projektmappe zu ermitteln.Um die Komponententests ausführen und Codeabdeckungsdaten für sie, in Komponententest-Explorer zu sammeln, wählen Sie Codeabdeckung analysieren.Sie können die Codeabdeckungsergebnisse in Codeabdeckungsergebnisse Fenster-auf der Menüleiste überprüfen, Test auswählen, Fenster, Codeabdeckungsergebnisse.Siehe Bestimmen des Umfangs des zu testenden Codes mithilfe von Codeabdeckung.

Siehe auch

Konzepte

Neues in Visual Studio 2012

Weitere Ressourcen

Visual C++-Team-Blog

Visual C++ in Visual Studio 2012