Note
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier les répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de changer de répertoire.
Vous pouvez utiliser l’opérateur de contexte en C++ pour qualifier un emplacement de point d’arrêt, un nom de variable ou une expression. L’opérateur de contexte est utile pour spécifier un nom à partir d’une étendue externe qui est sinon masquée par un nom local.
Syntaxe
Il existe deux façons de spécifier le contexte :
{,,[module] } expression
Les accolades doivent contenir deux virgules et le nom du module (exécutable ou DLL) ou le chemin d’accès complet.
Par exemple, pour définir un point d’arrêt à la
SomeFunctionfonction deEXAMPLE.dll:{,,EXAMPLE.dll}SomeFunctionmodule !expression
EXAMPLE.dll!SomeFunction
module est le nom d’un module. Vous pouvez utiliser un chemin complet pour lever l’ambiguïté entre les modules portant le même nom.
Si le chemin du module inclut une virgule, un espace incorporé ou une accolade, vous devez utiliser des guillemets autour du chemin afin que l’analyseur de contexte puisse reconnaître correctement la chaîne. Les guillemets simples sont considérés comme faisant partie d’un nom de fichier Windows. Vous devez donc utiliser des guillemets doubles. Par exemple,
{,,"a long, long, library name.dll"} g_Varexpression est toute expression C++ valide qui se résout en cible valide, telle qu’un nom de fonction, un nom de variable ou une adresse de pointeur dans le module.
Lorsque l’évaluateur d’expression rencontre un symbole dans une expression, il recherche le symbole dans l’ordre suivant :
Étendue lexicale vers l’extérieur, commençant par le bloc actuel, série d’instructions placées entre accolades et continuant vers l’extérieur avec le bloc englobant. Le bloc actuel est le code contenant l’emplacement actuel, l’adresse du pointeur d’instruction.
Étendue de la fonction. Fonction actuelle.
Étendue de classe, si l’emplacement actuel se trouve à l’intérieur d’une fonction membre C++. L’étendue de classe inclut toutes les classes de base. L’évaluateur d’expression utilise les règles de domination normales.
Symboles globaux dans le module actuel.
Symboles publics dans le programme actuel.