Navigieren in C++-Code in Visual Studio

Visual Studio stellt eine Reihe von Tools zur Verfügung, mit denen Sie schnell und effizient in Ihrer Codebasis navigieren können.

Öffnen einer enthaltenen Datei

Klicken Sie mit der rechten Maustaste auf eine #include-Anweisung, und wählen Sie Zum Dokument wechseln aus. Sie können auch den Cursor auf diese Zeile platzieren und F12 drücken, um die Datei zu öffnen.

Screenshot der C++-Option „Zu Dokument wechseln“ im Kontext einiger include-Anweisungen

Umschalten zwischen Header- und Codedatei

Sie können zwischen einer Headerdatei und der entsprechenden Quelldatei wechseln. Klicken Sie mit der rechten Maustaste auf eine beliebige Stelle in Ihrer Datei, und wählen Sie Header-/Codedatei umschalten aus. Sie können auch STRG+K, STRG+O drücken.

Gehe zu Definition/Deklaration

Sie können zur Definition eines Codeelements navigieren, indem Sie mit der rechten Maustaste in den Editor klicken und Gehe zu Definition auswählen oder indem Sie F12 drücken. Sie können auf ähnliche Weise zu einer Deklaration navigieren, indem Sie mit der rechten Maustaste klicken, um das Kontextmenü zu öffnen, oder indem Sie STRG+F12 drücken.

Screenshot der Optionen nach einem Rechtsklick auf ein Codeelement: „Gehe zu Definition“, „Definition einsehen“ und „Gehe zu Deklaration“

Gehe zu

Gehe zu umfasst mehrere Navigationsfeatures, die basierend auf von Ihnen festgelegten Filtern jeweils ein spezifisches Ergebnis erzielen.

Sie können Gehe zu mit STRG+, öffnen. Diese Aktion öffnet ein Suchfeld über dem Dokument, das Sie bearbeiten.

Screenshot des Suchfelds nach dem Öffnen von „Gehe zu“. Es gibt ein Textfeld für Ihre Suchbegriffe und Filter für Typen, zuletzt verwendete Dateien usw.

Gehe zu umfasst folgende Suchfilter:

  • Gehe zu Zeile (STRG+G): Hiermit können Sie schnell zu einer anderen Zeile in Ihrem aktuellen Dokument springen.
  • Gehe zu allen (STRG+, oder STRG+T): Die Suchergebnisse umfassen alles Folgende.
  • Gehe zu Datei (STRG+1, F): Hiermit suchen Sie in Ihrer Projektmappe nach Dateien.
  • Gehe zu Typ (STRG+1, T): Die Suchergebnisse umfassen Folgendes:
    • Klassen, Strukturen und Enumerationen.
    • Schnittstellen und Delegaten (nur verwalteter Code).
  • Gehe zu Member (STRG+1, M): Die Suchergebnisse umfassen Folgendes:
    • Globale Variablen und globale Funktionen.
    • Klassenmembervariablen und Memberfunktionen.
    • Konstanten.
    • Enumerationselemente.
    • Eigenschaften und Ereignisse.
  • Gehe zu Symbol (STRG+1, S): Die Suchergebnisse umfassen Folgendes:
    • Ergebnisse von „Gehe zu Typ“ und „Gehe zu Member“.
    • Alle verbleibenden C++-Sprachkonstrukte, einschließlich Makros.

Beim ersten Aufruf von Gehe zu mit STRG+ wird Gehe zu allen aktiviert (keine Filter für die Suchergebnisse). Sie können dann den gewünschten Filter über die Schaltflächen neben dem Suchfeld auswählen. Sie können einen spezifischen Filter mithilfe der entsprechenden Tastenkombination aufrufen. Dadurch wird das Suchfeld Gehe zu geöffnet, der jeweilige Filter ist ausgewählt. Alle Tastenkombinationen sind konfigurierbar.

Beginnen Sie Ihre Suchabfrage mit dem Zeichen des jeweiligen Filters gefolgt von einem Leerzeichen, um einen Textfilter anzuwenden. (Das Leerzeichen kann bei Gehe zu Zeile weggelassen werden.) Folgende Textfilter sind verfügbar:

  • Gehe zu allen: (kein Textfilter)
  • Gehe zu Zeilennummer: :
  • Gehe zu Datei: f
  • Gehen zu Typ: t
  • Gehe zu Member: m
  • Gehe zu Symbol: #

Im folgenden Beispiel werden Suchergebnisse des Vorgangs Gehe zu Datei mit dem Filter „f“ veranschaulicht:

Screenshot der Ergebnisse von „Zu Dateien wechseln“. Aufgrund der Benutzereingabe „f str“ werden string_utils.cpp und string_utils.h angezeigt, da beide „str“ im Namen enthalten.

Geben Sie ein „?“ gefolgt von einem Leerzeichen ein, um die Liste der Textfilter anzuzeigen. Sie können auch über das Menü Bearbeiten auf die Gehe zu-Befehle zugreifen. Dort können Sie die jeweiligen Tastenkombinationen für Gehe zu einsehen.

Screenshot des Menüs „Gehe zu“ mit Optionen wie „Gehe zu Zeile“ (STRG+G), „Gehe zu Datei“ (STRG+1, STRG+F) usw.

Suchen oder in Dateien suchen

Mit Suchen (STRG+F) oder In Dateien suchen (STRG+UMSCHALT+F) können Sie eine Textsuche in Ihrer Projektmappe durchführen.

Die Suche kann auf eine Auswahl, das aktuelle Dokument, alle offenen Dokumente, das aktuelle Projekt oder die gesamte Projektmappe begrenzt werden. Sie können reguläre Ausdrücke und Nur-Text-Suchen verwenden. Alle Übereinstimmungen werden automatisch in der IDE hervorgehoben.

Screenshot des Dialogfelds „Suchen“ mit einer Benutzersuche nach „channel“ (Kanal). Gelbe Hervorhebungen in der Datei zeigen alle Stellen, an denen „channel“ gefunden wurde.

In Dateien suchen ist eine leistungsstärkere Version von Suchen, die Ergebnisse im Fenster Suchergebnisse anzeigt. Sie können externe Codeabhängigkeiten suchen, nach Dateitypen filtern und vieles mehr.

Screenshot des Dialogfelds „Suchen und Ersetzen“ mit ausgewählter Seite „In Dateien suchen“. Es werden Optionen für die Suche unter Berücksichtigung der Groß-/Kleinschreibung, für die Suche des gesamten Worts usw. angezeigt.

Sie können die Ergebnisse von In Dateien suchen in zwei Fenstern sortieren. Sie können Ergebnisse mehrerer Suchen aneinander anfügen. Wählen Sie ein Ergebnis aus, um zu dieser Position in der Datei zu springen.

Screenshot eines Suchergebnisses für „In Dateien suchen“ mit einer Auflistung von Dateien, die Text enthalten, der der Suchzeichenfolge entspricht, und einem Auszug der einzelnen Übereinstimmungen.

Weitere Informationen finden Sie in der Visual Studio-Dokumentation unter Find in Files (In Dateien suchen).

Alle Verweise suchen

Platzieren Sie den Textcursor auf oder direkt hinter das Symbol, klicken Sie mit der rechten Maustaste, und wählen Sie Alle Verweise suchen aus, um alle Vorkommnisse des Symbols in Ihrer Codebasis zu suchen. Sie können die Ergebnisse auf verschiedene Weisen filtern, sortieren oder gruppieren. Die Ergebnisse werden inkrementell aufgefüllt. Sie werden als Lese- oder Schreibvorgänge klassifiziert, damit Sie erkennen können, was sich in Ihrer Projektmappe befindet und was sich dagegen in Systemheadern oder anderen Bibliotheken befindet.

Screenshot der Ergebnisse von „Alle Verweise suchen“ mit der Zeile, in der das Symbol gefunden wurde, Informationen dazu, in welcher Datei und welchem Projekt es sich befindet usw.

Sie können die Ergebnisse anhand der folgenden Kategorien gruppieren:

  • Projekt, dann Definition
  • Nur Definition
  • Definition, dann Projekt
  • Definition, dann Pfad
  • Definition, Projekt, dann Pfad

Ergebnisse filtern

Zeigen Sie auf eine Spalte, und klicken Sie auf das angezeigte Filtersymbol, um die Ergebnisse zu filtern. Sie können die Ergebnisse der ersten Spalte Filtern, um beispielsweise Zeichenfolgen und Kommentarverweise zu filtern, die Sie möglicherweise nicht sehen möchten.

Screenshot der Filteroptionen „Bestätigt“, „Nicht bestätigt“, „In Kommentar“ und „Nicht verarbeitet“ mit jeweils vielen Ergebnissen für diese Kategorien

  • Bestätigte Ergebnisse: Tatsächliche Codeverweise auf das gesuchte Symbol. Beispielsweise gibt die Suche nach einer Memberfunktion namens Size alle Verweise auf Size zurück, die mit dem Bereich der Klasse übereinstimmt, die Size definiert.

  • Nicht bestätigte Ergebnisse: Dieser Filter ist standardmäßig deaktiviert, da er Symbole mit übereinstimmenden Namen aufführt, die jedoch keine tatsächlichen Verweise auf das gesuchte Symbol sind. Wenn Sie zum Beispiel über zwei Klassen verfügen, die eine Memberfunktion namens Size definieren, und Sie eine Suche nach Size für einen Verweis eines Objekts von Class1 durchführen, werden alle Verweise auf Size von Class2 als nicht bestätigte Ergebnisse aufgeführt.

  • Nicht verarbeitete Ergebnisse: Alle Verweise suchen kann bei größeren Codebasen mehr Zeit beanspruchen, weshalb „nicht verarbeitete“ Ergebnisse hier aufgeführt werden. Nicht verarbeitete Ergebnisse weisen eine Übereinstimmung mit dem Namen des gesuchten Symbols auf, wurden jedoch noch nicht als tatsächliche Codeverweise bestätigt. Sie können diesen Filter aktivieren, um schneller Ergebnisse zu erhalten. Einige Ergebnisse sind möglicherweise keine tatsächlichen Verweise.

Ergebnisse sortieren

Sie können die Ergebnisse nach einer beliebigen Spalte sortieren, indem Sie auf jeweilige Spalte auswählen. Sie können zwischen auf- und absteigender Reihenfolge wechseln, indem die Spalte ein weiteres Mal auswählen.

Sie können zur Definition eines Typs in einer Datei oder zu Typmembern navigieren, indem Sie die Navigationsleiste verwenden, die sich über dem Editorfenster befindet.

Screenshot der Navigationsleiste über dem Editorfenster mit „cryptlib > ChannelSwitch > ChannelMessageSeriesEnd()“

Weitere Informationen