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


/Zc:forScope (принудительное обеспечение соответствия в области видимости оператора for)

Использовался для реализации стандартного поведения C++ для циклов for с расширениями Майкрософт (/Ze).

Синтаксис

/Zc:forScope[-]

Замечания

Стандартное поведение заключается в том for , чтобы инициализатор цикла вышел из области после for цикла. В разделе /Zc:forScope- и /Zefor инициализатор цикла остается в области до окончания локальной области.

Параметр /Zc:forScope включен по умолчанию. /Zc:forScope не затрагивается при указании параметра /permissive- .

Параметр /Zc:forScope- не рекомендуется к использованию и будет удален в одном из следующих выпусков. Использование /Zc:forScope- приводит к созданию предупреждения D9035 о нерекомендуемом элементе.

Приведенный ниже код компилируется при использовании параметра /Ze , но не при использовании /Za.

// zc_forScope.cpp
// compile by using: cl /Zc:forScope- /Za zc_forScope.cpp
// C2065, D9035 expected
int main() {
    // Compile by using cl /Zc:forScope- zc_forScope.cpp
    // to compile this non-standard code as-is.
    // Uncomment the following line to resolve C2065 for /Za.
    // int i;
    for (int i = 0; i < 1; i++)
        ;
    i = 20;   // i has already gone out of scope under /Za
}

Если используется параметр /Zc:forScope-, то каждый раз, когда переменная будет попадать в область из-за ее объявления в предыдущей области, будет выдаваться предупреждение C4288 (оно отключено по умолчанию). Для иллюстрации этого поведения в примере кода необходимо убрать символы // для объявления int i.

Поведение параметра /Zc:forScope во время выполнения можно изменить с помощью директивы pragma conform .

При использовании параметра /Zc:forScope- в проекте с существующим файлом PCH выдается предупреждение, параметр /Zc:forScope- пропускается, а компиляция продолжается c использованием существующих файлов PCH. Если вы хотите создать новый PCH-файл, используйте /Yc (создать предварительно скомпилированный файл заголовка).

Дополнительные сведения о вопросах соответствия в Visual C++ см. в статье Nonstandard Behavior.

Установка данного параметра компилятора в среде разработки Visual Studio

  1. Откройте диалоговое окно Страницы свойств проекта. Подробнее см. в статье Настройка компилятора C++ и свойства сборки в Visual Studio.

  2. Выберите страницу свойств>конфигурации C/C++>Language.

  3. Измените свойство Обеспечение согласования видимости переменных, объявленных в заголовке оператора for .

Установка данного параметра компилятора программным способом

См. также

/Zc (соответствие)
/Za, /Ze (отключение расширений языка)