C의 암시적 함수 선언

Ammar Ali 2023년10월12일
C의 암시적 함수 선언

이 튜토리얼은 C의 메인 함수 위에 함수를 선언함으로써 암시적 함수 선언의 경고를 제거하는 방법에 대해 설명합니다.

C의 암시적 함수 선언

때때로 컴파일러는 C 언어에서 함수의 암시적 선언에 대한 경고를 표시합니다. 이는 함수가 main() 함수 위에 선언되지 않았거나 해당 헤더 파일이 포함되지 않았음을 의미합니다.

예를 들어 printf() 함수는 stdio.h 헤더 파일에 속하며 C 소스 파일에서 사용하기 전에 이를 포함하지 않으면 컴파일러는 함수 선언이 암시적이라는 경고를 표시합니다.

이 경우 함수 선언이 포함된 헤더 파일을 포함하거나 main() 함수 위에 함수를 선언해야 합니다. 예를 들어, 헤더 파일을 포함하지 않고 printf() 함수를 사용합시다.

아래 코드를 참조하십시오.

int main() {
  int a = 10;
  printf("a = %d", a);
  return 0;
}

출력:

main.c: In function 'main':
main.c:5:5: warning: implicit declaration of function 'printf' [-Wimplicit-function-declaration]
    5 |     printf("a = %d",a);
      |     ^~~~~~
main.c:5:5: warning: incompatible implicit declaration of built-in function 'printf'
main.c:1:1: note: include '<stdio.h>' or provide a declaration of 'printf'
  +++ |+#include <stdio.h>
    1 |
a = 10

위의 출력에서 ​​컴파일러가 printf() 함수의 선언이 암시적이며 <stdio.h> 파일을 포함하거나 다음 선언을 제공해야 한다는 경고를 표시한 것을 볼 수 있습니다. 소스 파일의 printf() 함수.

또한 a의 값이 인쇄된 것을 볼 수 있습니다. 이는 헤더 파일을 포함하지 않았음에도 printf() 함수가 완벽하게 작동했음을 의미합니다.

이제 헤더 파일을 포함하고 위의 예를 반복해 보겠습니다. 아래 코드를 참조하십시오.

#include <stdio.h>

int main() {
  int a = 10;
  printf("a = %d", a);
  return 0;
}

출력:

a = 10

우리는 printf() 함수에 대한 헤더 파일을 포함했기 때문에 암시적 함수 선언의 경고가 이번에는 표시되지 않음을 위에서 볼 수 있습니다.

암시적 함수 선언 경고는 소스 파일에 함수를 생성했지만 main() 함수 위에 선언하지 않은 경우에도 표시됩니다.

컴파일러는 함수 선언이 암시적이라는 것을 함수를 호출하려고 할 때 경고합니다. 예를 들어 함수를 만들고 main() 함수 위에 선언하지 않고 main() 함수에서 호출해 보겠습니다.

#include <stdio.h>

int main() {
  int a = fun(2, 3);
  printf("a = %d", a);
  return 0;
}

int fun(int x, int p) {
  int a = x + p;
  return a;
}

출력:

main.c: In function 'main':
main.c:4:13: warning: implicit declaration of function 'fun' [-Wimplicit-function-declaration]
    4 |     int a = fun(2, 3);
      |             ^~~
a = 5

위의 출력에서 ​​우리가 만든 함수에 대한 경고가 표시되는 것을 볼 수 있습니다. 이 문제를 해결하려면 main() 함수 위에 함수를 선언해야 합니다.

예를 들어 main() 함수 위에 함수를 선언하고 위의 예를 반복해 보겠습니다. 아래 코드를 참조하십시오.

#include <stdio.h>

int fun(int x, int p);
int main() {
  int a = fun(2, 3);
  printf("a = %d", a);
  return 0;
}

int fun(int x, int p) {
  int a = x + p;
  return a;
}

출력:

a = 5

이제 경고가 사라진 것을 볼 수 있습니다. 헤더 파일에 함수를 선언한 다음 소스 파일에 헤더 파일을 포함할 수도 있습니다. 이는 코드를 단순화하기 때문에 많은 함수의 경우에 유용합니다.

작가: Ammar Ali
Ammar Ali avatar Ammar Ali avatar

Hello! I am Ammar Ali, a programmer here to learn from experience, people, and docs, and create interesting and useful programming content. I mostly create content about Python, Matlab, and Microcontrollers like Arduino and PIC.

LinkedIn Facebook

관련 문장 - C Function