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