错误:“FILE”没有名为“__fileL”的成员

时间:2021-05-13 17:37:16

标签: c linux

我有一个程序版本,以前可以编译为 *.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);
        }

1 个答案:

答案 0 :(得分:5)

FILE 结构旨在成为不透明类型。您不应该访问其成员。

您应该改用 fileno 函数,该函数将为您提供与 FILE 对象关联的底层文件描述符。

但是,在这种情况下,您也不想这样做。不要使用 lseek,而是使用 fseek,它执行相同的操作,但接受 FILE * 而不是文件描述符编号。