На страница 182 от Средата за програмиране UNIX кодът за 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();
?
Моето четене е, че той декларира променлива fp
, която е указател към FILE
и функция fopen
, която връща указател към FILE
.
Ако е така: Защо fopen
forward се декларира в тялото на функцията? Защо не декларираме аргументите му?