프로그래밍언어/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언어에서는 함수 프로토타입을 명확히 작성하는 것이 표준이며, 코드의 안전성과 유지 보수를 위한 필수 요소입니다. 항상 올바른 형식으로 함수 선언을 작성하는 습관을 들이세요.