【问题标题】:Why is std::FILE in capital letters?为什么 std::FILE 是大写字母?
【发布时间】:2011-11-26 21:31:53
【问题描述】:

我想知道为什么 C 和 C++ 的 FILE 类型用大写字母拼写。其他类型用小写字母拼写。

编辑参见 C++11 的第 27.9.2 节,表 134

【问题讨论】:

  • 因为它是从纯 C 演变而来的 FILE?
  • Tradition! - 又名向后兼容性
  • 几周前我在 SO 上看到过这个问题,但它没有出现在搜索中......
  • 为了向后兼容而保留的许多不幸的不一致之一。就像creat()函数和其他类似的。
  • @AndréCaron 更不用说,FOPEN_MAX_IONBF 甚至 stderr,stdin (原文如此)

标签: c++ c naming


【解决方案1】:

非常古老的 C 方言中,在标准化之前,当 FILE 类型被发明时,在 typedef 存在之前,这个名字是一个宏:

#define FILE struct _iobuf

约定是使用全部大写的宏命名。

http://minnie.tuhs.org/cgi-bin/utree.pl?file=V7/usr/include/stdio.h

(小写的宏只是函数的优化版本 - 其中许多也作为正确的函数存在)

【讨论】:

  • 我可以理解将宏用作内联函数,但类型别名不会使用typedef 吗?这是typedef出现之前吗?
  • @AndréCaron V7 /usr/include 目录只包含一次“typedef”——将jmp_buf 定义为int[3]。有可能 setjmp/longjmp 的编写晚于 stdio,或者存在未使用 typedef jmp_buf 的较早版本的 setjmp/longjmp。或者在某些时候 typedef 可能不适用于结构。
猜你喜欢
  • 2013-06-25
  • 2017-03-17
  • 1970-01-01
  • 2012-01-20
  • 2012-10-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多