728x90
이 오류는 함수 정의나 선언, 매크로 사용 시 숫자 상수 앞에 식별자나 괄호가 필요할 때 발생합니다. 즉, 함수 이름이나 변수 이름 없이 숫자가 바로 나오는 경우, 컴파일러는 해당 숫자를 해석할 수 없어 문법 오류를 발생시킵니다.
주로 매크로 정의에서 실수하거나, 함수 선언을 잘못 작성했을 때 발생합니다.
● 오류 예제
#include <stdio.h>
int main() {
5(3); // 오류: 숫자 앞에 함수 식별자 없음
return 0;
}
컴파일 시 다음과 같은 오류 메시지를 출력합니다.
error: expected identifier or ‘(’ before numeric constant
● 해결 방법
숫자는 함수처럼 사용할 수 없으므로 반드시 함수 이름(식별자)이나 매크로 이름이 먼저 와야 합니다. 아래는 함수 선언을 잘못 매크로처럼 작성한 경우의 수정 예시입니다.
#include <stdio.h>
#define SQUARE(x) ((x)*(x))
int main() {
int result = SQUARE(5);
printf("%d\n", result);
return 0;
}
출력 결과:
25
● 실전 팁
- 숫자 상수 앞에 함수명이나 변수명이 없이 괄호를 사용하는 것은 문법 오류입니다.
- 매크로 사용 시에도 숫자만 남지 않도록 괄호와 식별자 구성에 주의하세요.
- 컴파일 오류 메시지에서 "numeric constant"가 포함되면 숫자 주변 문법을 먼저 확인하세요.
C언어는 숫자를 직접 함수처럼 사용할 수 없으며, 항상 식별자나 괄호 구조가 있어야 문법적으로 완성됩니다. 문법 구조를 올바르게 기억하고 사용해야 오류를 줄일 수 있습니다.
728x90