프로그래밍언어/C언어[Error]
[C언어][Error] 091. function declaration isn’t a prototype – 프로토타입이 아님
about_IT
2025. 5. 4. 18:58
이 오류는 함수 선언이 현대 C언어 표준(C89/C99 이후)에서 요구하는 함수 프로토타입 형식이 아닐 경우 발생합니다. 함수 프로토타입이란 함수가 어떤 인자를 받는지 정확히 명시하는 선언 방식으로, 컴파일러가 타입 체크와 오류 검사를 수행할 수 있도록 도와줍니다.
프로토타입이 아닌 함수 선언은 컴파일러가 인자의 타입 정보를 알 수 없게 되어, 인자 개수 및 타입이 일치하지 않아도 오류를 감지하지 못하게 됩니다. 이는 버그로 이어질 수 있어 현대 C에서는 반드시 프로토타입을 작성해야 합니다.
● 오류 예제
#include <stdio.h>
// 비표준 선언 (프로토타입 아님)
int add();
int main() {
printf("%d\n", add(3, 4)); // 컴파일러가 인자 검사 불가
return 0;
}
int add(int a, int b) {
return a + b;
}
컴파일 시 다음과 같은 경고나 오류 메시지를 출력할 수 있습니다.
warning: function declaration isn’t a prototype
● 해결 방법
함수를 선언할 때는 반드시 매개변수의 타입을 포함한 프로토타입 형식으로 작성해야 합니다.
#include <stdio.h>
// 올바른 프로토타입 선언
int add(int a, int b);
int main() {
printf("%d\n", add(3, 4));
return 0;
}
int add(int a, int b) {
return a + b;
}
출력 결과:
7
● 실전 팁
- 모든 함수 선언은 인자의 타입까지 명시하는 프로토타입 형식으로 작성하세요.
- 매개변수 없이 정의하려면
void
를 명시해야 합니다. 예:int func(void)
- 함수 선언 없이 호출하면 암시적 선언 오류까지 유발될 수 있으므로 항상 선언을 먼저 작성하세요.
현대 C언어에서는 함수 프로토타입을 명확히 작성하는 것이 표준이며, 코드의 안전성과 유지 보수를 위한 필수 요소입니다. 항상 올바른 형식으로 함수 선언을 작성하는 습관을 들이세요.