Kontextoperator (Ausdrücke der Sprache C/C++)

Aktualisiert: November 2007

Dieses Thema gilt für folgende Anwendungsbereiche:

Edition

Visual Basic

C#

C++

Web Developer

Express

Nur "Systemeigen"

Standard

Nur "Systemeigen"

Pro und Team

Nur "Systemeigen"

Tabellenlegende:

Vorhanden

Nicht vorhanden

Befehl oder Befehle, die standardmäßig ausgeblendet sind.

Der Kontextoperator wird als zusätzlicher Operator vom systemeigenen Debugger bereitgestellt. Beim Debuggen von systemeigenem Code können Sie den Kontextoperator zur Kennzeichnung von Haltepunktpositionen, Variablennamen oder Ausdrücken verwenden:

  • {[{[Funktion],[Quellcode],[Modul] } location

  • {[{[Funktion],[Quellcode],[Modul] } variable_name

  • {[Funktion],[Quellcode],[Modul] } Ausdruck

In den geschweiften Klammern kann eine beliebige Kombination aus Funktionsname, Quelldateipfad und Modulpfad (ausführbare Datei oder DLL) enthalten sein. Der Kontextoperator eignet sich z. B. insbesondere für die Angabe eines Namens außerhalb des Gültigkeitsbereichs, der andernfalls durch einen lokalen Namen verborgen würde.

Beispiel

So setzen Sie in Zeile 301 von EXAMPLE.CPP einen Haltepunkt

{,EXAMPLE.CPP,}@301

Auch wenn Sie Funktion oder Modul weglassen, müssen beide Kommas angegeben werden. Die folgende Syntax ist daher nicht gültig:

{File.c, File.exe} @143 // Invalid syntax

Wenn Sie dagegen Quellcode und Modul weglassen, sind die Kommas nicht erforderlich. Folgende Syntax ist gültig:

{Fun} @143

Enthält der Pfad für Quellcode oder Modul ein Komma, ein eingebettetes Leerzeichen oder eine geschweifte Klammer, müssen Sie den Pfad in doppelte Anführungszeichen einschließen, damit die Zeichenfolge vom Kontextparser richtig erkannt wird. Einfache Anführungszeichen werden als Teil eines Windows-Dateinamens betrachtet; daher sollten stets doppelte Anführungszeichen verwendet werden. Beispiel:

{,"a long, long, name.c", } .143

Wenn die Ausdrucksauswertung auf ein Symbol in einem Ausdruck trifft, wird in der folgenden Reihenfolge nach dem Symbol gesucht:

  1. Beginnend mit dem aktuellen Block (in geschweifte Klammern eingeschlossene Anweisungen) vom lexikalischen Gültigkeitsbereich nach außen und weiter zum äußeren, umschließenden Block. Der aktuelle Block entspricht dem Code mit der aktuellen Position (Adresse des Anweisungszeigers).

  2. Gültigkeitsbereich der Funktion. Die aktuelle Funktion.

  3. Gültigkeitsbereich der Klasse, sofern sich die aktuelle Position innerhalb einer C++-Memberfunktion befindet. Der Klassengültigkeitsbereich umfasst alle Basisklassen. Von der Ausdrucksauswertung werden die normalen Dominanzregeln verwendet.

  4. Aktuelles Modul.

  5. Globale Symbole.

  6. Sonstige Module.

  7. Öffentliche Symbole im Programm.

Mithilfe des Kontextoperators wird der Ausgangspunkt der Suche unter Umgehung der aktuellen Position festgelegt. Es kann zwar keine Klasse, dafür jedoch eine Memberfunktion der Klasse festgelegt werden, damit die Ausdrucksauswertung eine Suche im äußeren Bereich durchführt.

Siehe auch

Weitere Ressourcen

Ausdrücke in systemeigenem C++