본문 바로가기
프로그래밍언어/C언어[Error]

[C언어][Error] 080. storage class specified for parameter – 파라미터에 저장 클래스 사용 불가

by about_IT 2025. 5. 2.

이 오류는 함수의 매개변수 선언에 잘못된 저장 클래스(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언어 함수 매개변수는 함수 호출 시 복사되어 전달되는 값이기 때문에, 저장 클래스 지정이 필요 없으며 허용되지도 않습니다. 함수 선언 시에는 자료형과 변수명을 명확하게 작성하는 것이 중요합니다.