中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档 | 网通镜像
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 未整理篇
[转]从一个微软的有意思的bug想到的
作者:songtitan 时间:2003-02-10 11:08 出处:互联网 责编:chinaitpower
              摘要:[转]从一个微软的有意思的bug想到的

从一个微软的有意思的bug想到的 

   这两天发现了一个微软的非常有意思的bug。
   说有意思是因为这个bug不是存在于程序中,而是存在于头文件中。

   这个bug的现象是这样的:

   如果在你的工程中有下面的内容:

   #include

   那么你的工程是编译不过去的,不出意外的话编译错误是C1004,同时指示你出错的文件是wabtags.h。
  
   花费了一些时间,最终确定问题出在微软身上。
   在wabtags.h中,某些注释的*号前面,存在一个不可打印字符,其值是0xA0.
   在英文平台下这不是问题,编译器简单的略过注释内的任何字符。
   但在中文平台下问题就出来了。0xA0是GB2312字符集的合法leadbyte(所谓leadbyte是指两个字节一个字符(比如汉字)的

第一个字节)。
   所以编译器把0xA0和后面的*看作双字节字符集的一个字符。于是整个文件就变成不符合语法规则的了。

   由这个问题起,我把微软所有的头文件稍描了一下。发现包含无效字符的情况还满多的,只不过绝大多时候,这些无效字符并

不产生问题(因为他们在注释里并且没机会吞掉正常字符)。

   而这些问题应该存在了5年还多。

   前一阵有人给我回复说:不要说什么设计师,在微软做个程序员,要比你设计师强多了。
   姑且不从对与否来看这句话,至少可以看到对微软的一种盲目崇拜。我想这种想法也具有相当的代表性。
   带着这种情绪去工作会有问题的。  
   不要忘了微软的程序,也是人写的,所以他们也会犯错。
   扩展来说,大师的话也是人说的,所以也会有错误。
   说句老话,相信别人的时候,别忘了相信自己。


关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有