尝试编译下面的示例时,我收到了一个警告:
>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;
}