/Zc:forScope (принудительное обеспечение соответствия в области видимости оператора for)
Обновлен: Ноябрь 2007
Используется для реализации стандартного поведения C++ в циклах The for Statement с расширениями Майкрософт (/Za, /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
Откройте диалоговое окно Страницы свойств проекта. Дополнительные сведения см. в разделе Изменение параметров проекта.
Щелкните папку C/C++.
Щелкните страницу свойств Язык.
Измените свойство Обеспечение согласования видимости переменных, объявленных в заголовке оператора for.
Установка параметра компилятора программным способом
- См. раздел ForceConformanceInForLoopScope.