對於for loop的使用,相信大家跟我一樣,總是習慣去撰寫
for(int i=0; i<5; ++i)
{.......
}
cout << i ;
但是,若是根據以上的程式,利用VC6或是BCB會看到哪樣的ouput i?很簡單~~就是 i = 5,但是正常來說,i 的scope 在哪裡??
i 應該是在for 之內的,所以他的生命週期(scope)應該也是在其中,但是由於VC++與BCB的錯誤,此得i 的scope 變成了for 之外,造成許多程式的問題。
解決方式: #define for if(0); else for
參考網站: BBS文章,參照侯捷老師上課內容
恩恩恩..這個問題在用到不同的Compiler倒是一個會讓初學者困惑的地方.....
所以在現在的環境我們有個不成文的習慣,在for loop之外會用到的變數一定會在外面宣告而不在for loop宣告...
而且..在for loop裡面宣告一個變數i或是j這種變數名稱,在for scope外面用到的話.在公司Code review會被念..:P
還有那個修正方法...似乎只能針對Visual C吧...在gcc還是不能用...所以在程式寫作風格上似乎還是需要有一定的習慣與規範才不會陷入這種因為Compiler的問題所造成的陷阱.
由 生魚片 發表於 March 30, 2005 02:30 PM剛剛試了一下...那個修正方法在
g++是可以的(可是g++本來就沒這種for loop的問題)
gcc確是不行的..沒想到在gcc在if else這種地方後面沒有加上括號..是沒有scope的..真是天下無奇不有..:XD