ETC/DEV-C++

[DEV-C++] 'for' loop initial declarations are only allowed in C99 or C11 mode

페로페라 2021. 6. 27. 02:24
반응형

Q. ERROR  'for' loop initial declarations are only allowed in C99 or C11 mode는 무슨 오류인가?

DEV-C++에서 for문을 사용하다가 이런 오류를 한 번 만나게 됐다.

나는 이전에 Visual Studio에서 C 프로그래밍을 연습하면서 늘 for문을 사용할 때, 아래와 같은 형식으로 코드를 짜왔다.

Visual Studio에서는 초기식에 int i=0으로 정의를 해주는 방식에 대해 오류가 난 적이 당연히 없었다.

그런데, DEV-C++로 개발환경을 옮기고 늘 하던대로 for문을 짰는데 이런 오류를 만나게 되었다.

'for' loop initial declarations are only allowed in C99 or C11 mode라니...

 

이 오류는 C99 방식에 대해 조금 알아야 한다.

for 문의 초기식에 정의를 하는 방식. 즉,  loop initial declaration 하는 것은 C99 방식에서 사용하는 것이다.

그러므로 당연하게 for 문의 초기식에서 변수를 정의하기 위해서는 C99을 지원하는 환경이어야 한다.

하지만, DEV-C++을 설치만 하고, 그 어떠한 것도 설정해주지 않으면, 컴파일 에러가 발생한다.

대체 왜??????

GCC는 C99이 기본적으로 설정되어 제공되지 않기 때문에, GCC를 사용하는 DEV-C++에서도 당연하게 에러가 발생하게 되는 것이다.

즉, 컴파일러 설정을 C99이나 C11 표준으로 바꿔주면 된다.

 

A. 문제 해결 방법

이 문제는 코드를 바꾸거나, DEV-C++ 설정을 바꾸는 방법 중에 선택하여 해결할 수 있다.

 

1. 코드를 바꾼다.

말 그대로 문제가 발생하는 아래의 코드를 수정하면 된다.

아래의 코드와 같이 int i=0을 초기식에 넣지 말고, 바깥에서 정의를 한 번 해주고, for문 내의 초기식에는 i=0으로 사용하면 에러는 발생하지 않는다.

하지만, 코드를 1줄로 쓸 수 있는 것을 굳이 분할해서 늘릴 필요는 없지 않은가?

그렇다면, DEV-C++의 설정을 바꿔버리면 된다.

 

2. DEV-C++ 설정 바꾸기

앞서 설명했듯이 GCC는 C99이 기본적으로 설정되어 제공되지 않기 때문에 우리가 직접 DEV-C++의 컴파일러 설정을 C99이나 C11 표준으로 바꿔주면 된다.

간단하게 요점부터 말하자면, DEV-C++에서 도구(T) - 컴파일러 설정(C) - 컴파일러 추가 명령 체크 후 -std=c99이나 -std=c11 입력

글로 봐서 이해가 되지 않는다면, 아래의 절차에 맞게 따라하면 된다.

 

① 가장 먼저, 상단의 도구(T)를 누른다.

 

② 컴파일러 설정(C)에 들어간다.

 

③ 컴파일러 추가 명령 앞의 □에 v 표시를 한다.

 

④ -std=c99이나 -std=c11을 입력해주고 확인을 누르고 나간다.

 

이 설정을 완료하고 나면, 에러가 깔끔하게 사라진 것을 볼 수 있다.

 

728x90
반응형

'ETC > DEV-C++' 카테고리의 다른 글

[DEV-C++] DEV-C++ 다운로드 방법 및 프로젝트 생성 방법  (0) 2021.06.09