Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2341238
  • 博文数量: 816
  • 博客积分: 10000
  • 博客等级: 上将
  • 技术积分: 5010
  • 用 户 组: 普通用户
  • 注册时间: 2008-12-17 17:57
文章分类

全部博文(816)

文章存档

2011年(1)

2008年(815)

分类:

2008-12-17 18:07:44

出现这个错误的真正的原因是 VC 编的程序的确产生了浮点异常,由 CPU 抛出的异常
VC 不捕获也不处理 CPU 抛出的浮点数异常中断,BCB 却捕获到了中断并且抛出异常,而 VC 又不能捕获 BCB 抛出的异常导致的
如果 VC 的程序编的比较严谨,不产生浮点数错误,也就不产生这个错误了,现在的做法是让 BCB 不捕获和抛出异常,忽略错误

Borland 的编译器力求严谨,哪怕程序有一点不合理的地方都会产生警告或者错误
Microsoft 的编译器忽略很多错误,没有经验的程序员编出的程序会产生很多不稳定的因素而查不到原因

VC 的程序嵌入了 BCB 编的 dll 文件,Borland 多管闲事了,把 exe 产生的浮点数异常的错误都抛了出来又抛回到了 exe 文件里
BCB 的程序员可以用 try ... catch 捕获到程序里面的异常,但是这个异常是由 VC 程序产生的,BCB 只是简单的谁产生的错误又抛回给谁处理,如果 exe 文件也是 BCB 编的,仍然可以用 try ... catch 捕获到这个异常,Borland 建议程序员编的程序编得非常严谨不产生错误,或者有错误及时处理。如果 BCB 在程序初始化的时候用 _control87() 可以关闭检查浮点错误,如果程序产生浮点错误不抛出异常,也不处理,当然这时候程序员也就不能发现有浮点数错误了

--------------------next---------------------

阅读(1379) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~