이 오류는 괄호 내부에 들어가야 할 표현식(expression)이 누락되었거나, 괄호 앞에 문법적으로 잘못된 요소가 있을 때 발생합니다. 특히 조건문이나 반복문에서 괄호만 쓰고 내부에 조건식을 넣지 않았을 경우, 컴파일러는 괄호 앞 또는 안에 유효한 표현식을 기대하다가 오류를 출력하게 됩니다.
예를 들어 if (), while () 처럼 괄호 안이 비어 있거나, 매크로/함수 호출에서 괄호가 열리고 닫히기만 하고 그 사이에 아무 값도 없을 경우에도 이 오류가 발생할 수 있습니다.
● 오류 예제
#include <stdio.h>
int main() {
if () { // 오류: 조건식이 없음
printf("조건문 실행\n");
}
return 0;
}
컴파일 시 다음과 같은 오류 메시지가 출력됩니다.
error: expected expression before ‘)’ token
● 해결 방법
괄호 안에는 반드시 유효한 조건식 또는 표현식을 작성해야 합니다. 아래는 수정된 예시입니다.
#include <stdio.h>
int main() {
int x = 1;
if (x == 1) {
printf("조건문 실행\n");
}
return 0;
}
출력 결과:
조건문 실행
● 실전 팁
- 조건문, 반복문, 함수 호출에서 괄호 내부는 항상 비워두지 않도록 주의하세요.
- if, while, switch 등에서 괄호 안은 필수입니다. 빈 괄호는 문법 오류를 유발합니다.
- 매크로나 함수가 인자를 필요로 할 경우, 호출 시 인자 전달을 빠뜨리지 마세요.
C언어에서 괄호는 논리 구조의 핵심 요소이므로, 항상 유효한 표현식이 들어가야 문법 오류를 방지할 수 있습니다. 괄호를 사용할 때는 항상 내부에 들어갈 내용을 먼저 채우는 습관을 들이세요.