Оператор контекста (Выражения языка C/C++)
Обновлен: Ноябрь 2007
Этот раздел применим к:
Выпуск |
Visual Basic |
-c конец_команды |
-c конец_команды |
Веб-разработчик |
---|---|---|---|---|
Express |
![]() |
![]() |
Только машинные коды |
![]() |
Standard |
![]() |
![]() |
Только машинные коды |
![]() |
Pro и Team |
![]() |
![]() |
Только машинные коды |
![]() |
Условные обозначения:
![]() |
Применяется |
![]() |
Не применим |
![]() |
Команда или команды, скрытые по умолчанию. |
Оператор контекста — это дополнительный оператор отладчика машинного кода. Этот оператор можно использовать при отладке машинного кода для уточнения расположения точки останова, имени переменной или выражения:
{[функция],[источник],[модуль] } location
{[функция],[источник],[модуль] } variable_name
{[функция],[источник],[модуль] } выражение
В фигурных скобках может содержаться любое сочетание имени функции, пути к исходному файлу и пути к модулю (исполняемому или DLL). Оператор контекста может использоваться для задания имени переменной из внешней области видимости, чтобы оно не перекрывалось локальным именем.
Пример
Чтобы задать точку останова в строке 301 файла EXAMPLE.CPP, используйте следующий оператор:
{,EXAMPLE.CPP,}@301
Если функция или модуль опущены, обе запятые все равно должны присутствовать. Поэтому следующее выражение синтаксически неверно:
{File.c, File.exe} @143 // Invalid syntax
Если же отсутствуют одновременно имя исходного файла и имя модуля, то запятые можно опустить. Следующее выражение синтаксически верно:
{Fun} @143
Если путь к файлу исходного кода или к модулю содержит запятую, внутренний пробел или фигурную скобку, то необходимо заключить путь в кавычки, чтобы парсер контекста смог правильно распознать строку. Одинарные кавычки рассматриваются как часть имени файла Windows, поэтому для этих целей необходимо использовать двойные кавычки. Например:
{,"a long, long, name.c", } .143
Если вычислитель выражений встречает в выражении символ, то он ищет его в следующем порядке:
В лексической области видимости и за ее пределами, начиная с текущего блока (последовательности операторов, заключенной в фигурные скобки) и затем переходя к объемлющему блоку. Текущий блок — это код, содержащий текущее расположение, адрес указателя на инструкцию.
Область видимости функции. Текущая функция.
В области видимости класса, если текущее расположение находится внутри функции-члена языка C++. Область видимости класса включает все базовые классы. Вычислитель выражений использует обычные правила доминирования.
Текущий модуль.
Глобальные символы.
Другие модули.
Открытые символы в программе.
С помощью оператора контекста задается отправная точка поиска в обход текущего расположения. При этом не указывается класс, но можно задать функцию-член класса, чтобы вычислитель выражений выполнил поиск вне текущей позиции.