(轉載請注明來源于金慶的專欄)
我還在用的VC6本來早就該升級了,畢竟VC已經從VC6經歷7.0、7.1、8.0,現在已經到了VC9(VC2008)了。
只是我比較戀舊,想想我的機器也受不了MS頻繁的升級,現在的機器也就免強能跑跑VC6。
但是現在C++標準升級了,GCC也升級了,VC6 真的已經是必須丟棄的雞骨頭了。
VC6自帶的std::string的引用計數在多核上讓我受苦,查錯一周有余才找到這個原兇。后來就促使我將stl庫替換為StlPort。
boost.asio庫明確說明不支持VC6。
stlsoft庫某些組件無法兼容VC6(詳細閱讀了《Extended STL》,才知道為了VC6要耗費大量的精力,有些組件本身已很復雜,以至于需要排除VC6才能實現。)
今天使用boost.date_time時又發現VC6不行了。
time_formatters.hpp(72) : error C2664: '_i64toa' : cannot convert parameter 2 from 'unsigned short [32]' to 'char *'
time_formatters.hpp相應代碼為:
VC6的_MSC_VER是1200,這段代碼明顯是針對VC6的。
可惜JDG的簡單補丁并沒有考慮VC6+STLP的情況,_i64toa()只能接受char buff,對于wchar則報以上錯誤。
實際上有StlPort,根本不必調用_i64toa(),因為int64_t在StlPort中是可以直接流式輸出的。
為什么只用到char,仍會對wchar實例化?為什么data_time的庫編譯會成功?這些仍是問題。
不用Stlport就不會報這個錯,可見wchar特化的實例化只在stlport環境下才進行。
查看date_time的文檔,明確支持的VC版本只有VC7.1。
VC8有些問題。VC6、7已停止正式的支持。
看來我該升級了,先升級我的機器。
我還在用的VC6本來早就該升級了,畢竟VC已經從VC6經歷7.0、7.1、8.0,現在已經到了VC9(VC2008)了。
只是我比較戀舊,想想我的機器也受不了MS頻繁的升級,現在的機器也就免強能跑跑VC6。
但是現在C++標準升級了,GCC也升級了,VC6 真的已經是必須丟棄的雞骨頭了。
VC6自帶的std::string的引用計數在多核上讓我受苦,查錯一周有余才找到這個原兇。后來就促使我將stl庫替換為StlPort。
boost.asio庫明確說明不支持VC6。
stlsoft庫某些組件無法兼容VC6(詳細閱讀了《Extended STL》,才知道為了VC6要耗費大量的精力,有些組件本身已很復雜,以至于需要排除VC6才能實現。)
今天使用boost.date_time時又發現VC6不行了。
time_formatters.hpp(72) : error C2664: '_i64toa' : cannot convert parameter 2 from 'unsigned short [32]' to 'char *'
time_formatters.hpp相應代碼為:
//TODO the following is totally non-generic, yelling FIXME
#if (defined(BOOST_MSVC) && (_MSC_VER < 1300))
boost::int64_t frac_sec =
date_time::absolute_value(td.fractional_seconds());
// JDG [7/6/02 VC++ compatibility]
charT buff[32];
_i64toa(frac_sec, buff, 10);
#else
#if (defined(BOOST_MSVC) && (_MSC_VER < 1300))
boost::int64_t frac_sec =
date_time::absolute_value(td.fractional_seconds());
// JDG [7/6/02 VC++ compatibility]
charT buff[32];
_i64toa(frac_sec, buff, 10);
#else
VC6的_MSC_VER是1200,這段代碼明顯是針對VC6的。
可惜JDG的簡單補丁并沒有考慮VC6+STLP的情況,_i64toa()只能接受char buff,對于wchar則報以上錯誤。
實際上有StlPort,根本不必調用_i64toa(),因為int64_t在StlPort中是可以直接流式輸出的。
為什么只用到char,仍會對wchar實例化?為什么data_time的庫編譯會成功?這些仍是問題。
不用Stlport就不會報這個錯,可見wchar特化的實例化只在stlport環境下才進行。
查看date_time的文檔,明確支持的VC版本只有VC7.1。
VC8有些問題。VC6、7已停止正式的支持。
看來我該升級了,先升級我的機器。