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

[C언어][Error] 039. invalid storage class for function – 잘못된 저장 클래스 사용

by about_IT 2025. 4. 27.

이 오류는 함수 선언에 잘못된 저장 클래스(storage class)를 사용했을 때 발생합니다. C언어에서는 변수와는 달리 함수에는 적용 가능한 저장 클래스가 제한되어 있으며, 허용되지 않는 storage class를 함수에 사용하면 컴파일 오류가 발생합니다.


예를 들어, auto, register, mutable 등의 키워드는 함수에 사용할 수 없습니다. 이들은 변수에만 사용 가능하며, 함수 정의에는 적절하지 않습니다.



● 오류 예제

#include <stdio.h>

auto void greet() {  // 오류: auto는 함수에 사용 불가
    printf("Hello\n");
}

컴파일러는 다음과 같은 오류 메시지를 출력합니다.

error: invalid storage class for function ‘greet’


● 해결 방법

함수에는 extern, static 같은 일부 저장 클래스만 허용됩니다. auto나 register 등은 함수에 사용할 수 없으며, 단순히 생략하거나 허용된 클래스만 사용하는 방식으로 수정해야 합니다.

#include <stdio.h>

void greet() {
    printf("Hello\n");
}

int main() {
    greet();
    return 0;
}

출력 결과:

Hello


● 실전 팁

  • auto, register, typedef, mutable 등은 함수에 사용할 수 없습니다.
  • 함수 선언 시 저장 클래스는 생략하거나 static, extern만 사용 가능합니다.
  • 불필요한 storage class 사용은 줄이고, 기본 문법만으로 충분히 표현할 수 있습니다.

C언어에서 함수는 변수와 다르게 저장 클래스의 적용 범위가 제한되어 있습니다. 반드시 올바른 키워드를 사용하고, 허용되지 않는 저장 클래스는 사용하지 않도록 주의해야 합니다.