我有一个程序版本,以前可以编译为 *.o 文件,但现在不行了,并给出了编译器错误。 我曾尝试在 Linux 上使用 gcc 编译器编译我的代码,但编译失败。
我看到编译器错误:
dspter.c:209:18: error: ‘FILE’ has no member named ‘__fileL’
lseek ((int)Ofd->__fileL, 1-sizeof(PDAY_REC99), SEEK_END);
dspter.c:220:13: error: ‘FILE’ has no member named ‘__fileL’
lseek (Ofd->__fileL, 1-sizeof(PDAY_REC99), SEEK_END);
Read99rec ()
{
char bf[20];
if (curnt.ltype == LOAD_PDAY)
{
lseek ((int)Ofd->__fileL, 1-sizeof(PDAY_REC99), SEEK_END);
fgets (Irec, sizeof(Irec), Ofd);
memset (bf, NULL, sizeof (bf));
memcpy (bf, Irec+2, 4);
count01 += atoi(bf);
memset (bf, NULL, sizeof (bf));
memcpy (bf, Irec+6, 6);
recs += atoi(bf);
memset (bf, NULL, sizeof (bf));
memcpy (bf, Irec+12, 16);
ctrl_tot1 += atof(bf);
lseek (Ofd->__fileL, 1-sizeof(PDAY_REC99), SEEK_END);
}
答案 0 :(得分:5)
FILE
结构旨在成为不透明类型。您不应该访问其成员。
您应该改用 fileno
函数,该函数将为您提供与 FILE
对象关联的底层文件描述符。
但是,在这种情况下,您也不想这样做。不要使用 lseek
,而是使用 fseek
,它执行相同的操作,但接受 FILE *
而不是文件描述符编号。