论如何挽回handle返回值的节操
来源:互联网 发布:店侦探软件多少钱 编辑:程序博客网 时间:2024/06/12 01:48
windows有个蛋疼的遗留问题,就是对获取句柄的API的返回值判断
习惯上这种判断应该是非0即可,但实际上却有两种,NULL和 INVALID_HANDLE_VALUE,定义如下:
#define NULL ((void *)0)
#define INVALID_HANDLE_VALUE (HANDLE)-1
也就是一个为0,一个为-1,若只判断非0而返回的却是 INVALID_HANDLE_VALUE,那么蛋疼的事就来了
这里先不吐槽巨硬为了做个有良心的企业(前向兼容)而作出了这种没良心的决定(返回值分裂),最妥善的方法自然是记住或者背着MSDN,不过这怎么可能呢?记性好谁做程序员!
所以想到这种折中的办法:
if(handle > 0)
{
//deal with handle
}
句柄是没有负值的(除非是指向自己,为0xFFFFFFFF,为什么用-1表示指向自己?INVALID_HANDLE_VALUE ?),这个变通也许(通常)不会出问题
- 论如何挽回handle返回值的节操
- 为什么 HANDLE 返回值不同?
- 怎么挽回的女朋友
- 无法挽回的大错
- 那些无法挽回的过往
- 失恋的程序员如何拯救——我来教你挽回你的爱情
- CreateWindow返回Handle失败
- 史上最牛高三老师:请保持光棍的节操
- 做软件测试的节操和底线
- android webview 漏洞背后的节操
- 一种毫无节操的机制---预解释
- 简单的节操视屏播放
- binder机制关于匿名service,handle是如何赋值的
- 如何理解UEFI中handle和protocol的概念
- openProcess时拒绝访问(GetlastError为5),返回的HANDLE为NULL的解决方法
- 返回HANDLE的API,失败时有时候是NULL,有时候是INVALID_HANDLE_VALUE
- HANDLE的无效值:NULL还是INVALID_HANDLE_VALUE? 以及对HANDLE的RAII封装
- 不可挽回的过去,不可预知的明天
- 基本数学运用
- s5pv210的gpio控制方法
- 转义字符
- POJ 2823 UESTCoj 1221 Sliding Window 单调队列 经典入门题
- 从十亿数据中找出出现最多的数以及出现次数
- 论如何挽回handle返回值的节操
- 常用License的区别
- RQNOJ 154 吉祥数
- C++进阶——类型转换符(参考百度文库)
- jQuery Ajax请求-jQuery.get(url, [data], [callback], [type])
- HDU-1500 Chopsticks DP
- 关于文件搜索
- 安卓弹出ProgressDialog进度框之后触摸屏幕就消失了的解决方法
- 安卓系统源码编译系列(二)——安卓系统源码编译教程