이 오류는 함수의 매개변수 선언에 잘못된 저장 클래스(storage class)를 사용했을 때 발생합니다. C언어에서는 매개변수에 static
, extern
, register
등 일부 저장 클래스를 사용할 수 없습니다. 이러한 키워드는 전역 또는 지역 변수의 저장 방식과 생존 기간을 지정할 때 사용되며, 함수 매개변수에는 적용되지 않습니다.
예외적으로 register
는 허용되는 경우도 있지만, 대부분의 경우 함수 파라미터에는 저장 클래스를 생략하거나 단순히 자료형과 변수명만을 사용해야 합니다.
● 오류 예제
#include <stdio.h>
void display(static int x) { // 오류: 매개변수에 static 사용
printf("%d\n", x);
}
컴파일 시 다음과 같은 오류 메시지가 출력됩니다.
error: storage class specified for parameter ‘x’
● 해결 방법
매개변수에는 저장 클래스 지정자를 생략하고, 자료형과 변수명만 명시해야 합니다.
#include <stdio.h>
void display(int x) {
printf("%d\n", x);
}
int main() {
display(5);
return 0;
}
출력 결과:
5
● 실전 팁
- 함수 파라미터에는
auto
,static
,extern
을 사용할 수 없습니다. - 매개변수에는 단순히
자료형 + 변수명
형식만 사용하세요. - 저장 클래스 지정자는 지역 변수나 전역 변수 선언에만 사용하세요.
C언어 함수 매개변수는 함수 호출 시 복사되어 전달되는 값이기 때문에, 저장 클래스 지정이 필요 없으며 허용되지도 않습니다. 함수 선언 시에는 자료형과 변수명을 명확하게 작성하는 것이 중요합니다.