이 오류는 C언어에서 코드 블록을 여는 중괄호({
) 앞에 식별자(identifier)나 괄호(()
)가 필요할 때, 그 형식이 빠져 있을 경우 발생합니다. 함수 정의나 조건문, 반복문 등의 문법 구조에서 중괄호를 시작하기 전에 올바른 구문이 선행되지 않으면 컴파일러는 구문 오류를 발생시킵니다.
특히 함수 정의 시 괄호 없이 중괄호를 열거나, if
, while
등 조건문에 괄호를 생략한 경우에 자주 발생합니다.
● 오류 예제
#include <stdio.h>
// 오류: 괄호 생략
int main {
printf("Hello\n");
return 0;
}
위 코드에서 main 함수 선언부에 괄호가 없기 때문에, 컴파일러는 { 앞에 식별자 또는 괄호가 필요하다는 오류를 발생시킵니다.
error: expected identifier or ‘(’ before ‘{’ token
● 해결 방법
함수 정의나 조건문, 반복문 등 모든 중괄호 사용 전에는 올바른 형식의 선언 또는 조건식을 반드시 작성해야 합니다.
#include <stdio.h>
int main() {
printf("Hello\n");
return 0;
}
출력 결과:
Hello
● 실전 팁
- 모든 함수 선언 시 괄호
()
는 필수입니다. - 조건문(
if
,while
등)에서도 괄호 생략은 허용되지 않으므로 항상 조건식을 괄호로 감싸야 합니다. - 중괄호를 열기 전에는 항상 해당 구조가 유효한 선언인지 확인하세요.
중괄호를 여는 모든 구조 앞에는 문법적으로 완성된 선언 또는 조건식이 있어야 하며, 생략된 괄호나 식별자는 문법 오류를 유발합니다. 코드를 작성할 때 구조의 완전성을 항상 점검하는 습관을 들이세요.