答案 0 :(得分:6)
如果查看C中使用的命名约定,大写字母通常用于预处理器宏。我的猜测是它最初被实现为扩展到库实现使用的具体类型的宏。
答案 1 :(得分:4)
来自here
“严格来说,在C中,FILE类型是一个库定义的(在stdio.h头文件中)类型别名(参见typedef关键字)。不需要使用FILE类型,只需要FILE *(指向FILE的)类型。它是(C语言中的一个有趣的习语)。 通常,FILE类型别名表示库定义的结构,但不直接使用其成员(它的实现依赖实体)。“
另外this:
typedef FILE *stream;
最后here:
答案 2 :(得分:1)
它不是一个opaque类型,它通常是一个C结构,但它的字段是实现定义的。
我猜大写是因为历史...
答案 3 :(得分:0)
不确定,但请注意,标准C库中只声明了几种类型。可能FILE
是第一个定义的,* _t样式尚未发明。
或许在原始的C版本中它是一个宏...想想在发明typedef
之前发生了什么:
#define FILE struct __file
而不是:
typedef struct __file FILE;