/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 во время выполнения можно изменить с помощью директивы pragma conform.
При использовании параметра /Zc:forScope- в проекте с существующим файлом PCH параметр /Zc:forScope- пропускается (с выводом предупреждения), а компиляция продолжается c использованием существующих файлов PCH. Если требуется создать новый файл PCH, используйте параметр /Yc (создать предварительно скомпилированный заголовочный файл).
Дополнительные сведения о вопросах соответствия, связанных с Visual C++, см. в разделе Нестандартное поведение.
Установка данного параметра компилятора в среде разработки Visual Studio
Откройте диалоговое окно Страницы свойств проекта. Дополнительные сведения см. в разделе Работа со свойствами проектов.
Откройте папку C/C++.
Выберите страницу свойств Язык.
Измените свойство Обеспечение согласования видимости переменных, объявленных в заголовке оператора for.
Установка данного параметра компилятора программным способом
- См. раздел ForceConformanceInForLoopScope.