BCB6 的一个低级 BUG,不过一般的程序不受影响

jishiping 2004-02-12 11:57:31
最近将我的程序从BCB5升级到BCB6,由于我的程序用到了多语言,我是用BCB提供
的多语言包方式来做的,结果发现程序处理多语言包时出现了bug。经过调试,我
发现了BCB6竟然有一个非常低级的错误,从而导致了我的程序出错。这个低级的错
误就是:BCB6 头文件中的结构 TLibModule ,竟然完全写错了,中间漏了几个变
量。

在VCL的源程序中,这个结构是这样定义的:
TLibModule = record
Next: PLibModule;
Instance: LongWord;
CodeInstance: LongWord;
DataInstance: LongWord;
ResInstance: LongWord;
Reserved: Integer;

可是在BCB6的头文件 sysclass.h 中,它竟然是这样定义的:
struct PACKAGE TLibModule
{
TLibModule *next;
long instance;
long resinstance;
long reserved;
};
中间少了CodeInstance、DataInstance这2个变量,所以我的程序中访问这个结构
的resinstance时,实际上访问的是CodeInstance这个变量,于是导致我的程序出
现问题。 哎,没想到 Borland 竟然会犯这么低级的错误……

因为一般的程序不会用到 TLibModule 的resinstance变量,所以一般的程序不受
影响。也正因为一般的程序不受影响,才导致这个低级的BUG到现在才被我发现。
...全文
39 42 打赏 收藏 转发到动态 举报
写回复
用AI写文章
42 条回复
切换为时间正序
请发表友善的回复…
发表回复

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧