Entdecken Sie agentenbasierte Entwicklung –

Bearbeiten und Navigieren in C++-Code

Dieser Artikel bietet einen Überblick über die Funktionen zum Bearbeiten und Navigieren im Code, die spezifisch für die C/C++-Erweiterung sind. Weitere Informationen zur allgemeinen Bearbeitung und Navigation in Visual Studio Code finden Sie unter Grundlagen der Bearbeitung und Code-Navigation.

Bearbeiten von C++-Code

Die vom C/C++-Erweiterungsmodul bereitgestellten Funktionen zur Quellcodebearbeitung sind leistungsstarke Werkzeuge zum Bearbeiten, Formatieren und Verstehen Ihrer Codebasis.

Identifizieren von Header-Dateien

Um die bestmögliche Bearbeitungserfahrung zu bieten, muss die C++-Erweiterung wissen, wo sie jede in Ihrem Code referenzierte Header-Datei finden kann. Standardmäßig durchsucht die Erweiterung das aktuelle Quellverzeichnis, dessen Unterverzeichnisse und einige plattformspezifische Speicherorte. Wenn eine referenzierte Header-Datei nicht gefunden werden kann, wird eine rote Wellenlinie unter der #include-Direktive angezeigt.

So geben Sie zusätzliche Include-Verzeichnisse an:

  1. Wählen Sie einen #include-Pfad aus, der keine Referenz hat.
  2. Wählen Sie die erscheinende Glühbirne und dann Edit "includePath" setting (Einstellung "includePath" bearbeiten), wodurch der Einstellungseditor der C/C++-Erweiterung geöffnet wird.
  3. Unter dem Abschnitt Include Path können Sie die Pfade für alle zusätzlichen Include-Verzeichnisse angeben.

Process of adding a new header to the include path

Elemente auflisten

Wenn Sie ein Elementzugriffssymbol (. oder ->) eingeben, zeigt der Editor eine Liste der Elemente an. Während Sie weitere Buchstaben eingeben, wird die Liste in Echtzeit gefiltert.

List members

Code-Formatierung

Die C/C++-Erweiterung für Visual Studio Code unterstützt die Quellcode-Formatierung unter Verwendung von clang-format und vc_format. Beide Formatierungsoptionen sind in der Erweiterung enthalten, wobei clang-format die Standardeinstellung ist.

Sie können eine gesamte Datei mit Dokument formatieren (⇧⌥F (Windows Shift+Alt+F, Linux Ctrl+Shift+I)) oder nur die aktuelle Auswahl mit Auswahl formatieren (⌘K ⌘F (Windows, Linux Ctrl+K Ctrl+F)) über das Kontextmenü (Rechtsklick) formatieren. Sie können die Formatierung auch basierend auf Benutzeraktionen wie Tippen, Speichern und Einfügen mit den folgenden Einstellungen auslösen:

  • editor.formatOnSave – zur Formatierung beim Speichern Ihrer Datei.
  • editor.formatOnType – zur Formatierung während der Eingabe (ausgelöst durch das Zeichen ;).

Weitere Informationen zur Formatierung finden Sie unter Formatierung.

Clang-format

Standardmäßig ist der clang-format-Stil auf file gesetzt. Das bedeutet, dass bei Vorhandensein einer .clang-format-Datei in Ihrem Arbeitsbereich die darin spezifizierten Einstellungen als Referenz für die Formatierung verwendet werden. Andernfalls basiert die Formatierung auf dem Standardstil, der in der C_Cpp.clang_format_fallbackStyle Einstellung festgelegt ist.

Derzeit ist der standardmäßige Formatierungsstil Visual Studio, eine Annäherung an den Standard-Code-Formatierer in Visual Studio. Er impliziert die folgenden Einstellungen:

UseTab: (VS Code current setting)
IndentWidth: (VS Code current setting)
BreakBeforeBraces: Allman
AllowShortIfStatementsOnASingleLine: false
IndentCaseLabels: false
ColumnLimit: 0

Um eine andere Version von clang-format als die mit der Erweiterung gelieferte zu verwenden, ändern Sie die C_Cpp.clang_format_path Einstellung auf den Pfad, unter dem die clang-format-Binärdatei installiert ist.

Beispielsweise unter Windows verwenden Sie:

  "C_Cpp.clang_format_path": "C:\\Program Files (x86)\\LLVM\\bin\\clang-format.exe"

vc_format

Wenn standardmäßig eine .editorconfig-Datei mit relevanten Einstellungen in der Nähe des zu formatierenden Codes identifiziert wird, wird die Visual C++-Formatierungs-Engine anstelle von clang-format verwendet. Andernfalls navigieren Sie zu der C_Cpp.formatting Einstellung und setzen diese auf vc_format, um die Visual C++-Formatierungs-Engine zu nutzen.

Erweiterte semantische Farbdarstellung

Wenn IntelliSense aktiviert ist, unterstützt die C/C++-Erweiterung für Visual Studio Code die semantische Farbdarstellung. Weitere Informationen zum Festlegen von Farben für Klassen, Funktionen, Variablen usw. finden Sie unter Erweiterte Farbdarstellung. Weitere Informationen zur Konfiguration von IntelliSense finden Sie unter IntelliSense-Konfiguration.

Kurzinfo

Sie können mit der Maus über ein Symbol fahren, um eine Inline-Ansicht seiner Definition zu sehen.

Quick info

Doxygen-Kommentare

Doxygen ist ein Werkzeug, das Dokumentationen aus Quellcode generiert. Wenn Sie Code mit Kommentaren versehen, generiert Doxygen daraus Dokumentationen für diese Funktionen. Geben Sie für Doxygen-Kommentare /** ein und drücken Sie Enter, um einen Doxygen-Kommentarblock zu generieren. Zu den unterstützten Doxygen-Tags gehören: @brief, @tparam, @param, @return, @exception, @deprecated, @note, @attention und @pre.

Markdown-Kommentare

Standardmäßig unterstützt die C++-Erweiterung die Anzeige einer Untermenge von Markdown in Ihrem Editor. Diese Untermenge unterstützt alle Markdown-Kommentare mit Ausnahme der Symbole _ und *. Ändern Sie die neue Einstellung Markdown in Kommentaren, um entweder das gesamte Markdown zu aktivieren, diese Untermenge beizubehalten oder die Markdown-Unterstützung zu deaktivieren.

Navigieren im Quellcode

Die Quellcode-Navigationsfunktionen können Ihnen helfen, Ihre Codebasis besser zu verstehen. Damit können Sie schnell nach Symbolen in Ihrem Code suchen, zu deren Definitionen navigieren oder Referenzen darauf finden.

Die Navigation basiert auf einer Reihe von Tags, die in einer lokalen Datenbank mit Symbolinformationen gespeichert sind. Immer wenn ein Ordner geöffnet wird, der C++-Quellcodedateien enthält, erstellt die C/C++-Erweiterung eine Datenbank der in diesen Dateien definierten Symbole. Diese Datenbank wird aktualisiert, sobald eine Datei geändert wird. Wenn ein Dokument geschlossen wird, ohne gespeichert zu werden, wird die Datenbank auf den zuletzt gespeicherten Zustand aktualisiert.

Nach Symbolen suchen

Sie können nach Symbolen in der aktuellen Datei oder im Arbeitsbereich suchen, um schneller durch Ihren Code zu navigieren.

Um in der aktuellen Datei nach einem Symbol zu suchen, drücken Sie ⇧⌘O (Windows, Linux Ctrl+Shift+O) und geben Sie dann den Namen des gesuchten Symbols ein. Es erscheint eine Liste potenzieller Übereinstimmungen, die während der Eingabe gefiltert wird. Wählen Sie aus der Trefferliste aus, um zum Ort des Symbols zu navigieren.

Searching the current file

Um im aktuellen Arbeitsbereich nach einem Symbol zu suchen, drücken Sie ⌘T (Windows, Linux Ctrl+T) und geben Sie dann den Namen des Symbols ein. Eine Liste möglicher Übereinstimmungen wird angezeigt. Wenn sich die von Ihnen gewählte Übereinstimmung in einer Datei befindet, die noch nicht geöffnet ist, wird die Datei geöffnet, bevor zur Position der Übereinstimmung navigiert wird.

Searching in your workspace

Sie können auch nach Symbolen suchen, indem Sie über die Befehlspalette (⇧⌘P (Windows, Linux Ctrl+Shift+P)) auf diese Befehle zugreifen. Verwenden Sie Schnellöffnung (⌘P (Windows, Linux Ctrl+P)) und geben Sie dann den Befehl @ ein, um die aktuelle Datei zu durchsuchen, oder den Befehl #, um den aktuellen Arbeitsbereich zu durchsuchen. ⇧⌘O (Windows, Linux Ctrl+Shift+O) und ⌘T (Windows, Linux Ctrl+T) sind Tastenkombinationen für die Befehle @ und #.

Aufrufhierarchie

Die Ansicht „Aufrufhierarchie“ zeigt alle Aufrufe an eine Funktion oder von einer Funktion aus. Sie hilft Ihnen, die komplexen Aufrufbeziehungen zwischen den Funktionen in Ihrem Quellcode zu verstehen.

Um die Aufrufhierarchie anzuzeigen, wählen Sie eine Funktion aus, klicken Sie mit der rechten Maustaste, um das Kontextmenü anzuzeigen, und wählen Sie Aufrufhierarchie anzeigen. Sie können auch die Tastenkombination (Shift+Alt+H unter Windows) verwenden oder die Befehlspalette (⇧⌘P (Windows, Linux Ctrl+Shift+P)) aufrufen und den Befehl Aufrufe: Aufrufhierarchie anzeigen ausführen. Dies füllt den Aufrufbaum in der Seitenleiste mit allen Funktionen, die von Ihrer ausgewählten Funktion aufgerufen werden.

Selecting call hierarchy and showing calls in sidebar

Klicken Sie auf das Telefonsymbol im Seitenleistenmenü, um zu eingehenden Aufrufen zu wechseln. Eingehende Aufrufe zeigen an, wann Ihre Funktion von einer anderen Funktion referenziert wird. Sie können auch verschachtelte Aufrufe untersuchen, indem Sie eine bereits im Aufrufbaum angezeigte Funktion auswählen und mit der rechten Maustaste darauf klicken, um die verfügbaren Befehle anzuzeigen.

Nested Calls for Call Hierarchy

Einblenden

Die Peek-Funktion (Vorschau) zeigt einige Zeilen Code in einem Peek-Fenster an, sodass Sie nicht von Ihrer aktuellen Position wegnavigieren müssen. Dies ist nützlich, um den Kontext eines Symbols schnell zu verstehen, ohne Ihren aktuellen Code verlassen zu müssen.

Um ein Peek-Fenster zu öffnen, navigieren Sie zum Kontextmenü (Rechtsklick) und wählen Sie Peek. Dort können Sie wählen, ob Sie die Definition, Deklaration, Typdefinition oder Referenzen eines Symbols in der Vorschau sehen möchten.

Peek definition

Mit geöffnetem Peek-Fenster können Sie die Liste der angezeigten Ergebnisse durchsuchen, um das gewünschte zu finden. Wenn Sie zum Speicherort eines dieser Ergebnisse navigieren möchten, wählen Sie das Ergebnis aus oder doppelklicken Sie im Quellcode, der auf der linken Seite des Peek-Fensters angezeigt wird.

Zu Definition gehen

Verwenden Sie die Funktion Zu Definition gehen, um schnell zu der Stelle zu navigieren, an der ein Symbol in Ihrem Quellcode definiert ist. Wählen Sie ein Symbol in Ihrem Quellcode aus und drücken Sie dann F12 oder klicken Sie mit der rechten Maustaste und wählen Sie Zu Definition gehen aus dem Kontextmenü. Wenn es nur eine Definition des Symbols gibt, navigieren Sie direkt zu dessen Position; andernfalls werden die konkurrierenden Definitionen in einem Peek-Fenster wie im vorherigen Abschnitt beschrieben angezeigt.

Wenn für das ausgewählte Symbol keine Definition gefunden werden kann, sucht die C/C++-Erweiterung automatisch nach einer Deklaration des Symbols.

Zu Deklaration gehen

Verwenden Sie die Funktion Zu Deklaration gehen, um zu der Stelle zu navigieren, an der ein Symbol in Ihrem Quellcode deklariert ist. Diese Funktion arbeitet wie Zu Definition gehen, jedoch für Deklarationen. Wählen Sie ein Symbol in Ihrem Quellcode aus, klicken Sie mit der rechten Maustaste und wählen Sie Zu Deklaration gehen aus dem Kontextmenü. Dies führt Sie zum Ort der Deklaration des Symbols.

Zu Referenzen gehen

Verwenden Sie die Funktion Zu Referenzen gehen, um zu verstehen, wie oft und wo ein Symbol in Ihrem Quellcode referenziert wird. Wählen Sie ein Symbol in Ihrem Quellcode aus und drücken Sie ⇧F12 (Windows, Linux Shift+F12) oder klicken Sie mit der rechten Maustaste und wählen Sie Zu Referenzen gehen aus dem Kontextmenü. Wenn Referenzen gefunden werden, werden diese in einem Peek-Fenster angezeigt.

Zu Typdefinition gehen

Verwenden Sie die Funktion Zu Typdefinition gehen, um zu der Stelle zu springen, an der ein Typ in Ihrem Quellcode definiert ist. Wählen Sie einen Typ in Ihrem Quellcode aus, klicken Sie mit der rechten Maustaste, um das Kontextmenü zu öffnen, und wählen Sie Zu Typdefinition gehen.

Nächste Schritte

Lesen Sie weiter, um mehr über Folgendes zu erfahren:

Wenn Sie weitere Fragen haben oder auf Probleme stoßen, reichen Sie bitte ein Issue auf GitHub ein. Möglicherweise werden Sie gebeten, Protokollinformationen der Erweiterung bereitzustellen, um bei der Diagnose des Problems zu helfen. Siehe C/C++-Erweiterungsprotokollierung für Hilfe bei der Bereitstellung von Erweiterungsprotokollen.

© . This website operates independently and is not affiliated with or endorsed by Microsoft. All brand names, logos, and trademarks are the property of their respective owners.