본문 바로가기

프로그래밍 오류해결

error C2065: 'i' : 선언되지 않은 식별자입니다.

C는 문법적으로 for문 내에서 i와 같은 변수를 사용해서 쓸수 없고 미리 선언해야 한다.
"for(int i=0; i<10; i++)"
때문에 위와 같은 선언은 문법적인 오류를 일으키게 된다.

하지만 C++ 문법에서는 위와 같은 문법은 허용이 된다.
각 컴파일러에 따라서도, 문제가 발생 할수 있는데, Visual Studio 6.0 기반에서 개발된 프로젝트가 2005로 컨버팅하여 사용되는 경우에는 for문에 관련된 내용때문에 문제가 생길수도 있다.

그렇게 발생하는 오류가 아래 스크린샷에서 볼수 있는 "error C2065: 'i' : 선언되지 않은 식별자입니다." 이다.


문제는 Visual studio 6.0에서는 특별한 오류없이 잘 실행될지 모르나, 요즘같이 대부분의 개발환경이 2005나 2008로 넘어가버린 추세에서는 이와 같은 오류로 인해, 코드에 걸린 오류를 해결하기 위해 일일이 for문을 수정하는 경우도 발생할수 있다.
아래에서 제시하는 해결책을 모를경우 말이다..

하지만 이러한 문제를 해결하기 위해서는, 컴파일러의 속성탭에서 옵션을 조정해줌으로써 해결해줄수도 있다.
해당 프로젝트의 [속성] -> [구성속성] -> [C/C++]-> [언어] 항목을 찾아들어가면 중간쯤에 "For 루프 범위 강제 규칙"에 관련된 내용을 볼수 있을것이다.

이 항목에 Default 값이 "예" 로 되어 있을텐데, 이 항목을 "아니오"로 바꿔주면 해당 문제점이 말끔히 해결된다.
결국 컴파일러가 최신버전으로 바뀌면서, 여러가지 문제점을 보안하기 위해 추가한 기능이 일으킨 error 라고 할수 있다.