【发布时间】:2019-12-30 03:29:48
【问题描述】:
在 C 语言中,要指定打开文件的方式,请使用字符串,例如 "r"、"w" 等。为什么不用 enum?枚举可以与 switch 语句一起使用,因此它们会运行得更快。为什么fopen 使用字符串而不是enum?问题很简单。
【问题讨论】:
-
天啊...不,C++ 本身并没有任何东西使它比 C 慢。
-
但是文件模式不仅仅是一个字符 - 允许有多种组合,例如“wb”或“ta+”。
-
这个问题基本上是无法回答的;这是 70 年代中后期做出的决定,并一直持续至今。那个时代的
open()调用非常简单,选项很少;它现在有无数的选项(POSIXopen()列出了 18 个选项)。字符串非常灵活,并且在必要时更容易扩展,但当然标准没有太大变化(请查看 C11 的附件 K §K.3.5.2.1 Thefopen_sfunction)。 -
“快得多”是一种误解。这里可能的性能差异与
fopen执行操作的时间成本之间存在多个数量级。 -
@AnttiHaapala — 我不记得我写的每一个答案,恐怕 — 十年是很长的时间!