이 오류는 함수 선언이나 정의에서 매개변수 목록 중 하나가 잘못 작성되었을 때 발생합니다. 특히 함수 인자 중 하나에 자료형은 명시되어 있지만 변수명이 없거나, 쉼표(,) 또는 가변 인자(...) 앞에서 선언 형식이 어색한 경우 컴파일러가 문법 오류로 인식합니다.
주로 복잡한 함수 선언을 하거나, 가변 인자 함수(printf
등)를 정의할 때 이 오류가 자주 발생합니다.
● 오류 예제
#include <stdio.h>
void printValues(int, ) { // 오류: 변수 이름 없이 쉼표로 끝남
printf("값을 출력합니다.\n");
}
컴파일 시 다음과 같은 오류 메시지가 출력됩니다.
error: expected ',' or '...' before ')' token
● 해결 방법
모든 매개변수는 자료형과 변수명이 명확히 작성되어야 하며, 쉼표 또는 가변 인자 기호 앞에는 올바른 인자 형식이 와야 합니다.
#include <stdio.h>
void printValues(int x) {
printf("x = %d\n", x);
}
int main() {
printValues(5);
return 0;
}
출력 결과:
x = 5
● 실전 팁
- 모든 함수 인자는
자료형 + 변수명
형식으로 작성해야 합니다. - 가변 인자 함수에서는
...
앞에 올바른 매개변수가 있어야 합니다. - 복잡한 함수 선언일수록 각 인자의 형식을 다시 한번 점검하는 습관을 가지세요.
C언어 함수 선언은 매우 엄격한 문법을 따르므로, 매개변수 선언 시 생략이나 부정확한 형식을 사용하지 않도록 주의해야 하며, 오류 발생 시 인자 목록 전체를 꼼꼼히 검토하는 것이 중요합니다.