2011年4月3日

怎么减少错误的发生

摘要: 错误,我们暂且仅对软件开发而言。错误的类别,暂且仅考虑接口错误和实现错误。接口错误一般可以分为误解和失配误解比如在一段公路入口有巨大的标识牌,上面写着:前方道路,靠左行,红灯行,绿灯停。这个大家可能觉得很荒谬,然而类似的事情在软件开发里面却层出不穷,生产方认为自己已经在文档中清楚地说明了用法和用途,然而他却没有意识到这与使用方的常识和惯例背道而驰。举个简单的例子,C 标准库里面的两个函数:#include size_t fwrite(const void * ptr, size_t size, size_t count, FILE * stream);#include void qsort(v 阅读全文

posted @ 2011-04-03 22:31 能发波 阅读(244) 评论(0) 推荐(0)

C++ 如何动态库实现接口兼容

摘要: 看了一篇文章:避免使用虚函数作为库的接口其中提到C++虚表的僵硬,导致版本更新时二进制兼容性的问题。其实这个问题不是C++的问题,而是C++实现的问题。如果接口的二进制兼容性是一个强制需求,在不影响运行效率的情况下,C++是完全可以实现的,不过需要多一点的空间开销和初始化开销。具体的方法可以参考 PE 文件中的 Import Table 和 Export Table。简单地讲,就是 App 和 DLL 各自维护一个 name->func_address 的映射数组,当然,这个 name 应该是名字碾碎后的 name 。 加载 DLL 时,将 DLL 中 Export Table 中相应项 阅读全文

posted @ 2011-04-03 21:40 能发波 阅读(1207) 评论(0) 推荐(0)

导航