Поделиться через


Оператор контекста (Выражения языка 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

Если вычислитель выражений встречает в выражении символ, то он ищет его в следующем порядке:

  1. В лексической области видимости и за ее пределами, начиная с текущего блока (последовательности операторов, заключенной в фигурные скобки) и затем переходя к объемлющему блоку. Текущий блок — это код, содержащий текущее расположение, адрес указателя на инструкцию.

  2. Область видимости функции. Текущая функция.

  3. В области видимости класса, если текущее расположение находится внутри функции-члена языка C++. Область видимости класса включает все базовые классы. Вычислитель выражений использует обычные правила доминирования.

  4. Текущий модуль.

  5. Глобальные символы.

  6. Другие модули.

  7. Открытые символы в программе.

С помощью оператора контекста задается отправная точка поиска в обход текущего расположения. При этом не указывается класс, но можно задать функцию-член класса, чтобы вычислитель выражений выполнил поиск вне текущей позиции.

См. также

Другие ресурсы

Выражения в машинном коде C++