Kontextoperator (Ausdrücke der Sprache C/C++)
Dieses Thema gilt für folgende Anwendungsbereiche:
Edition |
Visual Basic |
C# |
F# |
C++ |
Web Developer |
---|---|---|---|---|---|
Express |
Nur "Systemeigen" |
||||
Pro, Premium und Ultimate |
Nur "Systemeigen" |
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:
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).
Gültigkeitsbereich der Funktion. Die aktuelle Funktion.
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.
Aktuelles Modul.
Globale Symbole.
Sonstige Module.
Ö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.