为什么 "fopen" 函数不使用枚举?

Why "fopen" function does not use enumerations?

为什么要使用 const char* 而不是这样的 enum 选择打开模式:

enum open_mode {
        READ,
        READ_BINARY,
        WRITE,
        ...
};

使用枚举不是更简单吗?

这是为了提供实现的自由。例如 VC++ 中的实现有可能 select 编码等:fopen("test.xml", "wt+,ccs=UNICODE")

原因很可能是历史原因:函数 fopen 已经存在于该语言的早期 K&R 版本中,而 enum 仅针对 ANSI 标准添加到该语言中。

到添加 enum 时,该语言已得到广泛使用,以至于更改如此重要功能的签名是不切实际的。