在《UNIX编程环境》第182页上,
efopen
的代码如下所示:(链接)
FILE *efopen(file, mode) /* fopen file, die if can't */
char *file, *mode;
{
FILE *fp, *fopen();
extern char *progname;
if ((fp = fopen(file, mode)) != NULL)
return fp;
fprintf(stderr, "%s: can't open file %s mode %s\n",
progname, file, mode);
exit(1);
}
这一行代码 FILE *fp, *fopen();
是干什么用的呢?
我的理解是,它声明了一个指向 FILE
类型的变量 fp
,并且声明了一个返回 FILE
指针的函数 fopen
。
如果是这样的话:为什么要在函数体内部提前声明 fopen
呢?为什么不声明它的参数呢?