为什么 "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
时,该语言已得到广泛使用,以至于更改如此重要功能的签名是不切实际的。
为什么要使用 const char*
而不是这样的 enum
选择打开模式:
enum open_mode {
READ,
READ_BINARY,
WRITE,
...
};
使用枚举不是更简单吗?
这是为了提供实现的自由。例如 VC++ 中的实现有可能 select 编码等:fopen("test.xml", "wt+,ccs=UNICODE")
原因很可能是历史原因:函数 fopen
已经存在于该语言的早期 K&R 版本中,而 enum
仅针对 ANSI 标准添加到该语言中。
到添加 enum
时,该语言已得到广泛使用,以至于更改如此重要功能的签名是不切实际的。