프로그래밍언어/C언어[Error]

[C언어][Error] 084. implicitly declared function – 함수 선언 누락

about_IT 2025. 5. 2. 20:50
728x90

이 오류는 C언어에서 함수가 호출되었지만, 호출 시점 이전에 해당 함수에 대한 선언(prototype)이 없을 때 발생합니다. C89 표준에서는 묵시적 선언(implicit declaration)이 허용되었지만, C99 이후 표준에서는 반드시 모든 함수가 호출되기 전에 선언되어야 합니다.


함수 선언 없이 사용하면 컴파일러는 기본적으로 int를 반환하고 인자에 대한 타입 검사도 하지 않기 때문에 심각한 버그로 이어질 수 있습니다.



● 오류 예제

#include <stdio.h>

int main() {
    greet();  // 오류: 선언되지 않은 함수 호출
    return 0;
}

void greet() {
    printf("안녕하세요!\n");
}

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

error: implicit declaration of function ‘greet’


● 해결 방법

함수는 반드시 호출하기 전에 선언하거나, 함수 정의를 호출보다 먼저 배치해야 합니다.

#include <stdio.h>

// 함수 선언
void greet();

int main() {
    greet();  // 이제 오류 없음
    return 0;
}

void greet() {
    printf("안녕하세요!\n");
}

출력 결과:

안녕하세요!


● 실전 팁

  • 모든 함수는 호출 전에 반드시 선언하거나 정의해야 합니다.
  • 헤더 파일을 만들어 필요한 함수 선언을 포함시키는 것이 좋은 습관입니다.
  • 묵시적 선언은 C99부터 금지되므로, 함수 선언 누락 여부를 항상 점검하세요.

함수 선언을 누락하면 컴파일러가 인자 타입을 정확히 판단하지 못해 치명적인 버그로 이어질 수 있습니다. 항상 함수 선언을 호출보다 먼저 작성하는 습관을 들이세요.

728x90