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?他说:“有些人认为,正确思想中的任何人都不应该利用这种结构的内部结构。”但他没有解释他们的意思。
答案 0 :(得分:4)
如果您想知道这些字段的含义,请查看实现基于FILE的IO调用的系统运行时库的源代码。
如果您编写依赖于使用这些字段的代码,那么它最多是不可移植的,最糟糕的是完全错误,并且绝对容易破解。例如,在Solaris上,只有普通的libc运行时库中至少有三种不同的FILE结构实现,其中一种实现(64位实现)是不透明的,你无法访问任何强大的领域。只需更改编译器标志即可更改代码使用的FILE结构。
这只是单个操作系统的一个版本。
答案 1 :(得分:0)
_iobuf::_file
可用于获取内部文件编号,对需要文件号的函数很有用。例如:_fstat()
。