March 29th, 2005
最近在做VC6轉換VC7的時候,倒是慢慢發現VC6的一些bug,舉例來說,看一下下面的範例程式:
if (int i) { i = 1; } > >
在VC6只會得到一個warnning:
warning C4700: local variable 'i' used without having been initialized > >
但是由於Constructor 通常不會有回傳值(return value),所以基本上在if() 不應該有變數的起始。所以這樣的code在GNU C++會發現是無法compiler過的~~~
當然VC7 修掉了這個嚴重的bug,你可以看到出現:
error C2059: syntax error : ')' > >
蠻有趣的bug,不過~~~ 若有人這樣寫code 可就慘了,因為雖然constructor沒有回傳值(return value),但是在VC6中, if (int i)卻是判斷為true~~~ 這樣可能是與原來的想法會有點出入~
所以有時候利用VC7來compiler一下現在的code,也是一個好主意。