FILE结构成员在C中的含义是什么?

时间:2015-04-21 09:47:41

标签: c

typedef struct _iobuf{
    char*   _ptr;
    int     _cnt;
    char*   _base;
    int     _flag;
    int     _file;
    int     _charbuf;
    int     _bufsiz;
    char*    _tmpfname;
   }  FILE;

我尝试打印它们但我不明白它们的含义。 在这里What exactly is the FILE keyword in C?他说:“有些人认为,正确思想中的任何人都不应该利用这种结构的内部结构。”但他没有解释他们的意思。

2 个答案:

答案 0 :(得分:4)

如果您想知道这些字段的含义,请查看实现基于FILE的IO调用的系统运行时库的源代码。

如果您编写依赖于使用这些字段的代码,那么它最多是不可移植的,最糟糕的是完全错误,并且绝对容易破解。例如,在Solaris上,只有普通的libc运行时库中至少有三种不同的FILE结构实现,其中一种实现(64位实现)是不透明的,你无法访问任何

这只是单个操作系统的一个版本。

答案 1 :(得分:0)

_iobuf::_file可用于获取内部文件编号,对需要文件号的函数很有用。例如:_fstat()