标准库`FILE`类型

时间:2011-09-08 13:10:25

标签: c

  

可能重复:
  Why is FILE all-caps as in FILE*?

为什么标准库FILE类型写成大写?
是因为它的不透明性吗?

谢谢。

4 个答案:

答案 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;