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

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

我试着打印它们,但我不明白它们的含义。 这里C中的FILE关键字究竟是什么? 他说:“有些人认为,正确思想中的任何人都不应该利用这种结构的内部结构。” 但他没有解释他们的意思。

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

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

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

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