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


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

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

/Zc:forScope[-]

Заметки

При стандартном поведении инициализатору цикла for позволяется выходить за пределы области видимости после цикла for. При использовании /Za, /Ze (отключить расширения языка) инициализатор цикла for остается в пределах области видимости до завершения локальной области видимости.

Следующий пример кода будет компилироваться при использовании параметра /Ze, но не при использовании /Za:

// zc_forScope.cpp
// compile with: /Zc:forScope- /Za
// C2065 expected
int main() {
   // Uncomment the following line to resolve.
   // int i;
   for (int i =0; i < 1; i++)
      ;
   i = 20;   // i has already gone out of scope under /Za
}

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

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

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

Дополнительные сведения о вопросах соответствия, связанных с Visual C++, см. в разделе Compatibility and Compliance Issues in Visual C++.

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

  1. Откройте диалоговое окно Страницы свойств проекта. Дополнительные сведения см. в разделе Изменение параметров проекта.

  2. Откроите папку C/C++.

  3. Выберите страницу свойств Язык.

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

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

См. также

Ссылки

/Zc (соответствие)

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