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

[C언어][Error] 058. conflicting types for built-in function – 내장 함수와 사용자 정의 함수의 이름 충돌

about_IT 2025. 4. 28. 00:17
728x90

이 오류는 C언어에서 제공하는 표준 라이브러리 함수(예: printf, malloc 등)와 동일한 이름으로 사용자 함수를 정의하려고 할 때 발생합니다. 컴파일러는 해당 이름이 이미 내장된 함수로 정의되어 있기 때문에, 다른 시그니처의 사용자 정의 함수가 충돌한다고 판단하여 오류를 출력합니다.


특히 표준 헤더를 포함한 상태에서 내장 함수 이름을 그대로 사용하는 경우 자주 발생합니다.



● 오류 예제

#include <stdio.h>

int printf() {  // 오류: 내장 함수 printf와 이름 충돌
    return 0;
}

컴파일러는 다음과 같은 오류 메시지를 출력합니다.

error: conflicting types for built-in function ‘printf’


● 해결 방법

표준 라이브러리 함수와 동일한 이름은 피하고, 고유한 이름으로 함수나 변수를 선언해야 합니다. 아래는 이름을 변경한 예시입니다.

#include <stdio.h>

int my_print() {
    printf("사용자 정의 함수 호출\n");
    return 0;
}

int main() {
    my_print();
    return 0;
}

출력 결과:

사용자 정의 함수 호출


● 실전 팁

  • 사용자 정의 함수는 표준 함수 이름과 겹치지 않도록 주의하세요.
  • 표준 라이브러리 헤더를 포함하면 내장 함수 정의가 함께 포함되므로 충돌 위험이 있습니다.
  • 고유한 네이밍 규칙을 사용하면 충돌 방지와 가독성 향상에 도움이 됩니다.

C언어는 표준 함수와 사용자 정의 함수 간 충돌을 허용하지 않으며, 이름 중복은 프로그램의 동작에 예기치 못한 오류를 유발할 수 있습니다. 항상 고유한 이름을 사용하는 습관을 가지세요.

728x90