Operatore di contesto (espressioni in linguaggio C/C++)
Aggiornamento: novembre 2007
Le informazioni contenute in questo argomento sono valide per:
Edition |
Visual Basic |
C# |
C++ |
Web Developer |
---|---|---|---|---|
Express |
![]() |
![]() |
Solo nativo |
![]() |
Standard |
![]() |
![]() |
Solo nativo |
![]() |
Pro e Team |
![]() |
![]() |
Solo nativo |
![]() |
Legenda tabella:
![]() |
Applicabile |
![]() |
Non applicabile |
![]() |
Comando o comandi nascosti per impostazione predefinita. |
L'operatore di contesto è un operatore aggiuntivo fornito dal debugger nativo. Durante il debug di un codice nativo, è possibile utilizzare l'operatore di contesto per qualificare la posizione di un punto di interruzione, un nome di variabile o un'espressione:
{[{[funzione],[origine],[modulo] } location
{[{[funzione],[origine],[modulo] } variable_name
{[funzione],[origine],[modulo] } espressione
Le parentesi graffe possono racchiudere qualsiasi combinazione di nome di funzione, percorso di file di origine e percorso di modulo (eseguibile o DLL). L'operatore di contesto è utile per specificare ad esempio un nome di un ambito esterno che verrebbe altrimenti nascosto da un nome locale.
Esempio
Per impostare un punto di interruzione alla riga 301 di EXAMPLE.CPP:
{,EXAMPLE.CPP,}@301
Se si omette funzione o modulo, non sarà possibile omettere le due virgole. Di conseguenza, la seguente sintassi non è valida:
{File.c, File.exe} @143 // Invalid syntax
Se si omette sia origine che modulo, sarà invece possibile omettere le virgole. La seguente sintassi è valida:
{Fun} @143
Se il percorso di origine o modulo include una virgola, uno spazio incorporato o una parentesi graffa, dovrà essere racchiuso tra virgolette in modo da consentire al parser del contesto di riconoscere la stringa correttamente. Poiché le virgolette singole vengono considerate parte di un nome di file di Windows, è necessario utilizzare le virgolette doppie. Ad esempio,
{,"a long, long, name.c", } .143
Quando l'analizzatore di espressioni rileva un simbolo in un'espressione, ne esegue la ricerca nel seguente ordine:
Ambito lessicale verso l'esterno, a partire dal blocco corrente, una serie di istruzioni racchiuse tra parentesi graffe, verso il blocco di inclusione. Il blocco corrente è il codice contenente la posizione corrente, ovvero l'indirizzo del puntatore all'istruzione (instruction pointer).
Ambito della funzione corrente.
Ambito della classe, se la posizione corrente è all'interno di una funzione membro C++. Nell'ambito della classe sono incluse tutte le classi base. L'analizzatore di espressioni utilizza le normali regole di dominanza.
Modulo corrente.
Simboli globali.
Altri moduli.
Simboli pubblici del programma.
L'operatore di contesto consente di specificare il punto iniziale della ricerca e ignorare la posizione corrente. Non è possibile specificare una classe, ma è possibile specificare una funzione membro della classe e fare in modo che l'analizzatore di espressioni effettui la ricerca verso l'esterno.