/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
Откройте диалоговое окно Страницы свойств проекта. Подробнее см. в статье Настройка компилятора C++ и свойства сборки в Visual Studio.
Выберите страницу свойств>конфигурации C/C++>Language.
Измените свойство Обеспечение согласования видимости переменных, объявленных в заголовке оператора for .
Установка данного параметра компилятора программным способом
- См. раздел ForceConformanceInForLoopScope.