/Zc:forScope(for 루프 범위의 강제 규칙)
Microsoft 확장( /Ze )과 함께for루프의 표준 C++ 동작을 구현하는 데 사용됩니다.
구문
/Zc:forScope[-]
설명
표준 동작은 루프 후 루프의 이니셜라이저가 범위를 벗어나도록 for
하는 for
것입니다. /Zc:forScope- 및 /Zefor
에서 루프의 이니셜라이저는 로컬 범위가 종료될 때까지 범위에 유지됩니다.
/Zc:forScope 옵션은 기본적으로 설정됩니다. /Zc:forScope는 /permissive- 옵션을 지정한 경우 영향을 받지 않습니다.
/Zc:forScope- 옵션은 더 이상 사용되지 않으므로 이후 릴리스에서 제거될 예정입니다. /Zc:forScope- 를 사용하면 사용 중단 경고 D9035가 발생합니다.
다음 코드는 /Za 가 아니라 /Ze에서 컴파일됩니다.
// 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
를 선언합니다.
conform pragma를 사용하여 /Zc:forScope 의 런타임 동작을 수정할 수 있습니다.
기존 .pch 파일이 있는 프로젝트에서 /Zc:forScope- 를 사용하면 /Zc:forScope- 가 무시되고 기존 .pch 파일을 사용하여 계속 컴파일합니다. 새 .pch 파일을 생성하려면 /Yc(미리 컴파일된 헤더 파일 만들기)를 사용합니다.
Visual C++의 규칙과 관련된 문제에 대한 자세한 내용은 Nonstandard Behavior을 참조하세요.
Visual Studio 개발 환경에서 이 컴파일러 옵션을 설정하려면
프로젝트의 속성 페이지 대화 상자를 엽니다. 자세한 내용은 Visual Studio에서 C++ 컴파일러 및 빌드 속성 설정을 참조하세요.
구성 속성>C/C++>언어 속성 페이지를 선택합니다.
For 루프 범위 강제 규칙 속성을 수정합니다.
프로그래밍 방식으로 이 컴파일러 옵션을 설정하려면
- ForceConformanceInForLoopScope을(를) 참조하세요.