아래 예제를 컴파일하려고하면 경고 메시지가 나타납니다.exit() 함수는 stdlib.h 외에도 선언되어 있습니까?
>gcc -o file file.c
file.c: In function ‘main’:
file.c:12: warning: incompatible implicit declaration of built-in function ‘exit’
일부 검색을 한 후에 #include <stdlib.h>
명령문이 누락되었습니다. 어디 exit()
함수를 선언했다? stdio.h
라이브러리는이를 선언하지 않습니다. 내 코드도 마찬가지입니다. 컴파일러가 지원한다면 왜 경고를주게됩니까? 또한 stdlib.h
에서 왜 재정의됩니까?
예 :
#include <stdio.h>
int main()
{
char *fn = "./test.txt";
FILE *fp;
if((fp = fopen(fn, "w"))==NULL)
{
printf("Cannot open file '%s' for writing.\n", fn);
exit(1);
}
fprintf(fp, "Hello, world!\n");
if(fclose(fp)==0)
printf("File '%s' closed successfully.\n", fn);
else
printf("Error closing file '%s'.\n", fn);
return 0;
}
존재하지 않는 함수를 참조 할 때 동작이 정의되지 않았다고 생각합니다. –