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

[C언어][Error] 008. incompatible type for argument – 함수 인자 타입이 맞지 않음

by about_IT 2025. 4. 22.

이 오류는 함수에 인자를 전달할 때, 함수가 기대하는 타입과 다른 타입의 값을 넘겨주는 경우 발생합니다. C언어는 함수 호출 시 인자의 타입을 엄격하게 검사하며, 타입이 호환되지 않으면 컴파일 에러를 발생시킵니다.


예를 들어 int형을 기대하는 함수에 float형을 전달하거나, char 포인터를 받아야 하는 함수에 정수를 넘기는 경우 등이 이에 해당합니다.


다음은 오류가 발생하는 예시입니다.

#include <stdio.h>

void printNumber(int n) {
    printf("%d\n", n);
}

int main() {
    float value = 3.14;
    printNumber(value);  // float을 int 인자로 전달
    return 0;
}

컴파일 시 다음과 같은 오류가 발생합니다.

error: incompatible type for argument 1 of ‘printNumber’

아래는 올바르게 타입을 맞춘 예시입니다.

#include <stdio.h>

void printNumber(int n) {
    printf("%d\n", n);
}

int main() {
    int value = 3;
    printNumber(value);
    return 0;
}

정상적으로 컴파일되며 출력 결과는 다음과 같습니다.

3

● 실전 팁

  • 함수 정의와 호출 시 인자의 타입이 정확히 일치하는지 확인하세요.
  • 컴파일러가 출력하는 오류 메시지에서 몇 번째 인자에서 문제가 발생했는지 확인하면 빠르게 수정할 수 있습니다.
  • 명시적 형 변환(casting)을 사용할 경우에도 의미가 바뀌지 않도록 주의하세요.

함수 인자 타입 오류는 대부분의 컴파일러에서 명확히 진단되므로, 메시지를 꼼꼼히 읽고 타입 선언과 호출 코드를 함께 검토하는 습관이 중요합니다.