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

[C언어][Error] 036. too many arguments to function – 함수 인자 수가 너무 많음

about_IT 2025. 4. 27. 17:02

이 오류는 함수 호출 시 정의된 매개변수보다 많은 수의 인자를 전달했을 때 발생합니다. C언어에서는 함수 선언 또는 정의에 지정된 인자의 수와 호출 시 전달되는 인자의 수가 일치해야 하며, 초과된 인자는 무시되지 않고 컴파일 오류로 이어집니다.


실수로 인자를 추가로 전달하거나 함수 정의를 잘못 이해하고 사용하는 경우 자주 발생합니다.



● 오류 예제

#include <stdio.h>

void greet(const char* name) {
    printf("Hello, %s!\n", name);
}

int main() {
    greet("Alice", "Bob");  // 오류: 인자 1개만 허용
    return 0;
}

위 코드에서 greet 함수는 인자를 1개 받도록 정의되어 있으나, 호출 시 2개의 인자를 전달했기 때문에 오류가 발생합니다.

error: too many arguments to function ‘greet’


● 해결 방법

함수 정의와 호출이 정확히 일치해야 합니다. 호출할 때는 함수가 요구하는 인자 수를 정확히 전달해야 하며, 인자의 타입도 일치해야 합니다.

#include <stdio.h>

void greet(const char* name) {
    printf("Hello, %s!\n", name);
}

int main() {
    greet("Alice");  // 올바른 호출
    return 0;
}

출력 결과:

Hello, Alice!


● 실전 팁

  • 함수를 호출할 때는 정의된 인자 수와 정확히 맞추어야 합니다.
  • 컴파일러는 인자의 개수뿐 아니라 타입도 확인하므로, 타입 불일치도 함께 점검하세요.
  • 함수 선언부가 없는 상태에서 함수를 호출하면 경고 없이 오류로 이어질 수 있으므로, 반드시 프로토타입을 선언하세요.

C언어에서 함수 호출은 정의와 정확히 일치해야 오류가 발생하지 않습니다. 불필요한 인자를 넘기거나 선언과 정의가 불일치하면 컴파일 타임에 오류가 발생하므로 주의 깊게 확인해야 합니다.