为什么fopen
C 中的“模式”参数由字符串给出?将它作为位掩码或类似的东西会更有意义(以我的思维方式)。字符串所需的开销是低效且不必要的。
问问题
691 次
2 回答
3
C11 §7.21.5.3 fopen 函数
参数
mode
指向一个字符串。如果字符串是以下之一,则文件以指示的模式打开。否则,行为未定义。271)
在脚注中:
271) 如果字符串以上述序列之一开始,则实现可能会选择忽略剩余的字符,或者它可能会使用它们来选择不同类型的文件(其中一些可能不符合 7.21.2 中的属性
根据 C99 的基本原理,委员会认为实现可以选择使用mode
标志以外的方法:
国际标准的基本原理 - 编程语言 - C §7.19.5.3 fopen 函数
实现可以选择允许附加文件规范作为模式字符串参数的一部分。例如,
file1 = fopen(file1name, "wb,reclen=80");
在提供面向记录的二进制文件并允许程序员指定记录长度的系统上,这可能是一个合理的扩展。
GNU libc 有一个允许mode
contains的扩展ccs=STRING
,参见glibc 手册
于 2013-09-25T08:16:16.853 回答
1
如果它是位掩码,它将更多地限于未来的扩展。GNU C 库已经允许 10 种不同的模式和 MSVC 15。此外,它们支持,ccs=string
位掩码无法实现的语法
于 2013-09-25T08:16:42.173 回答