编程误区:Windows版本检查存在的问题
作者:BlogUpdater |
时间:2020-12-09 |
浏览:993 |
评论已关闭 条评论
蝎子
操作系统有一个版本号来表示当前的版本,它确实很重要,但是,有很多盆友使用一种错误的方式来检查版本。下面我们来具体看看。
Windows95
在Win95时期,很多开发者都使用了类似于下面的代码对操作系统版本进行检查:
我们先说结果:我们不得不将Windows95上的GetVersion函数的返回值修改为3.95,而不是4.0。
它应该是要返回4.0的。
为什么要这样设计?
让我们考虑,如果Windows 95的GetVersion函数返回了4.0,则版本号中的主版本检查通过,但是次版本号却不会通过,因为0小于10。
这个问题是如此的普遍,以至于我们放弃了为每个应用程序做兼容性指导,而是使用这种简单而粗暴的做法:如果应用程序调用GetVersion获取操作系统版本,则我们统一返回3.95。
这样,上面的版本检查代码就可以正常通过了。
不是很完美,但是确实能工作,对吧。
总结
我突然想起来,同时期的DirectX也总是返回4.x,会不会出于同样的考虑呢?
也许还真是。
不过话说回来,Microsoft已经不再建议开发者直接对系统版本号做硬编码比较了,而是使用诸如IsFeatureXXXAvailable这样的方式来获取某个特性在当前系统是否可用,这种方式,看起来:更直观,也不容易出错。
这个小技巧,大家伙可以试试看。
最后
Raymond Chen的《The Old New Thing》是我非常喜欢的博客之一,里面有很多关于Windows的小知识,对于广大Windows平台开发者来说,确实十分有帮助。
本文来自:《Bad version number checks》
如需转载,请注明来自:拓扑梅尔智慧办公平台 | TopomelBox 官方站点
相关推荐
- 为什么对byte的操作会得到int的结果
- Posted on 12月26日
- 为什么树结点不能在树控件中重复使用
- Posted on 04月25日
- strncpy可能导致的缓冲区溢出问题
- Posted on 03月15日
- 窗口最小化后获取窗口的大小和位置
- Posted on 06月05日
评论已关闭。