为什么来自FILE
的{{1}}结构的名称是用大写写的?
答案 0 :(得分:20)
最可能的原因是它曾经是#define
,而#define
通常都是大写字母。
答案 1 :(得分:9)
总结已经指出的内容:
大写是C" macros"的惯例。
" FILE"旨在成为一个不透明的"结构:你应该使用它,但你不应该知道"已知"关于它的内部。哪个可以(并且将会)从平台变为平台。
具体做法是:
http://tigcc.ticalc.org/doc/stdio.html
FILE是流的主要文件控制结构。最正确 它的结构非常依赖于平台,因此ANSI C提出了这一点 这种结构化类型的确切结构不应该是已知的,并且 编写良好的程序不需要访问内部字段 这种结构。
正如上面指出的那样,不仅 CAN " FILE"可以实现为宏,但在Unix7中它实际上是 WAS 实现为宏:
http://minnie.tuhs.org/cgi-bin/utree.pl?file=V7/usr/include/stdio.h
V7 / usr / include / stdio.h =>
#define BUFSIZ 512
#define _NFILE 20
# ifndef FILE
extern struct _iobuf {
char *_ptr;
int _cnt;
char *_base;
char _flag;
char _file;
} _iob[_NFILE];
# endif
...
#define FILE struct _iobuf
...