프로그래밍언어/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