/Zc:forScope(for 루프 범위의 강제 규칙)
Microsoft 확장(/Ze)으로 for 루프에 대한 표준 C++ 동작을 구현하는 데 사용됩니다./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를 선언한 위의 코드에서 // 문자를 지워 보십시오.
conform pragma로 /Zc:forScope의 런타임 동작을 수정할 수 있습니다.
기존 .pch 파일을 가진 프로젝트에서 /Zc:forScope-를 사용하는 경우 /Zc:forScope-는 경고와 함께 무시되며 기존 .pch 파일을 사용하여 컴파일이 진행됩니다.새로운 .pch 파일을 생성하려면 /Yc(미리 컴파일된 헤더 파일 만들기)를 사용하십시오.
Visual C++의 규칙과 관련된 문제에 대한 자세한 내용은 호환성 및 규정 준수 문제를 Visual C++를 참조하십시오.
Visual Studio 개발 환경에서 이 컴파일러 옵션을 설정하려면
프로젝트의 속성 페이지 대화 상자를 엽니다.자세한 내용은 프로젝트 설정 수정을 참조하십시오.
C/C++ 폴더를 클릭합니다.
언어 속성 페이지를 클릭합니다.
For 루프 범위에서 강제 규칙 속성을 수정합니다.
프로그래밍 방식으로 이 컴파일러 옵션을 설정하려면
- 자세한 내용은 ForceConformanceInForLoopScope를 참조하십시오.