原创 不要使用VC6自带的STL收藏

新一篇: boost 1.33 仍然没有network library | 旧一篇: C++ 在库中处理错误的一种方法

今天一个VC6.0的程序折腾了一天, 最后实在无法定位错误, 只好使用VC7.1编译, 结果一切OK.

由于程序中使用了不少STL的东西, 特别是容器等, 于是怀疑是VC6.0自带的STL问题, 于是又使用STLPort + VC6.0 编译了一次, 一切OK. 具体问题还不容易定位, 不过这个程序并不是我写的, 而是网上的一个例子程序, 应该也经过了很多人的测试.

VC6自带的STL毛病多多, 包括不标准的auto_ptr, (缺少reset, 扩展的owner等), string没有clear方法, 使用copy-on-write, 但是不是线程安全的等等. 建议不要使用VC6自带的stl实现, 可以考虑使用stlport.


如果你使用boost.build, 即bjam, 那么可以运行;

bjam msvc stdlib=stlport 即可.






发表于 @ 2005年08月16日 19:40:00|评论(loading...)|编辑

新一篇: boost 1.33 仍然没有network library | 旧一篇: C++ 在库中处理错误的一种方法

评论

#ilovevc 发表于2005-08-16 21:07:00  IP: 61.186.252.*
vc6带的有些离标准太远了. 上面说的auto_ptr / string就是. 结果还得自己修改.

我这个例子是从asio下拷来的, 有兴趣你可以去看看. asio在sourceforge上可以找到. 我测试的程序在src/example/chat/里面.
在一定的测试环境下出错. 即首先启动server, 连一个client, 发送一个message, 然后再启动另外一个client, 那么后来的这个client无法发送出去消息.

#jq0123 发表于2007-09-27 16:55:31  IP: 222.71.145.*
asio就没有支持VC6,主页上说支持VC7.1和VC8。
我的VC6是不是该退休了?
发表评论  


当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击登录
Csdn Blog version 3.1a
Copyright © ilovevc