繁体   English   中英

FILE结构成员在C中到底意味着什么?

[英]What do FILE struct members mean exactly in 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()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM