|
我在做关于“出错处理”的实验,书上介绍到了两个宏,_LINE_和_FILE_。在程序中也用到了,但是编译是却显示没有定义。不知道是哪里有问题了。请大家帮忙解决一下程序代码如下(头文件filefcn.h 和函数描述filefcn.c 主函数testmacs.c):
/*
*filefcn.h -A function to open files
*/
#ifndef FILEFCN_H_
#define FILEFCN_H_
int open_file
(FILE **fp, char *fname, char *mode, int line, char *file)
#endif
/*
*filefcn.c -Using _FILE_ and _LINE_
*/
int open_file
(FILE **fp, char *fname, char *mode, int line, char *file)
{
if(*fp=fopen(fname,mode))==NULL)
{
fprintf(stderr,"[%s:%d]open_file() failed\n",file,line);
return 1;
}
return 0;
}
/*
*testmacs.c - Exercise the function defined in filefcn.c
*/
#include<stdio.h>
#include<stdlib.h>
#include"filefcn.h"
int main(void)
{
FILE *fp;
//文件foo_bar 已存在
if(open_file(&fp,"foo_bar","w", _LINE_, _FILE_))
{
exit(EXIT_FAILURE);
}
else
{
fputs("This text proves we scribbled in the file.\n".fp);
fclose(fp);
}
//文件bar_bar 不存在
if(open_file(&fp,"bar_bar","w", _LINE_, _FILE_))
{
exit(EXIT_FAILURE);
}
else
{
fclose(fp);
}
return 0;
}
用gcc编译(gcc testmacs.c filefcn.c -o testmacs),得到的结果为
'_LINE_' undeclared......
......
'_FILE_'undeclared....... |
|