【发布时间】:2016-07-08 07:58:45
【问题描述】:
大多数返回句柄的函数,例如OpenProcess、OpenFile、OpenThread、FindWindow 等,在失败时返回 0。我了解返回无效结果以指示失败是一种好习惯。但是,如果windows选择-1作为INVALID_HANDLE_VALUE,为什么这些函数在失败时不返回-1?
【问题讨论】:
-
我认为这就是我们所说的历史设计选择。除了做出选择的人之外,每个人都不知道为什么做出选择。但是一旦做出选择,向后兼容性就意味着它不能被改变。
-
那么
INVALID_HANDLE_VALUE是干什么用的?为什么 MS 还保留那个宏? -
@user3386109 完全同意。还有一点是,在 MS OS 的第一个版本中,指向资源的指针的句柄和空值可以与
NULL指针进行比较。 -
这是Unix投下的长长的影子,大量代码通过xenix移植到win16。它的 open() 函数以 -1 失败,0 是标准输出流的有效“句柄”。
标签: c windows visual-c++ handle