精華區beta Programming 關於我們 聯絡資訊
※ 引述《yoco.bbs@bbs.wretch.cc (眠月..)》之銘言: > ※ 引述《UNARY.bbs@bbs.cse.ttu.edu.tw (API)》之銘言: > > 實際上 > > 當我遇到那種 C4101 warning : "unreferenced local variable" 的情況時 > > 都是在「宣告一個變數 但沒初始化」的時候發生 > 我試了這段程式碼 > int main () > { > int a, b ; // ab沒初始化 > int c=1, d=2 ; // cd有初始化 > std::cout << a << c ; // ac有用到,bd沒有用到 > } > 得到的訊息是.. > warning C4101: 'b' : 未參考的區域變數 > warning C4700: 所使用的區域變數 'a' 尚未初始化 > 由此可見,也許變數的初始化也當作是被參考到.. > 我是不太清楚編譯器在這方面實作的細節, 畢竟 VC++ 如何實作,外人無從真知。我認為,只因為有初始化, C4101 這個 warning 就不會把它挑出來,這和它的訊息文字所要 傳遞的意思是有出入的。 下面是用 Comeau on-line compiler[1]所編的訊息。 line 8: warning: variable "a" is used before its value is set std::cout << a << c ; ^ line 6: warning: variable "b" was declared but never referenced int a, b ; ^ line 7: warning: variable "d" was declared but never referenced int c=1, d=2 ; ^ 這不是極清楚明確嗎? 至於 g++ 的 warning 也很簡單易解,但不如 Comeau 那麼詳盡 unrefer.cpp:6: warning: unused variable `int b' unrefer.cpp:7: warning: unused variable `int d' 總之,多參考幾套 compiler 跑出的訊息很有用,這套的看 不懂,換一下別套的,往往一下子就明白自己哪裡弄錯了。 目前的感受,平均說來 Comeau 的訊息最好。 -=-=-=-=-=-=-= [1] 好東西 :-) http://www.comeaucomputing.com/tryitout/ -- ※ Origin: SayYA 資訊站 <bbs.sayya.org> ◆ From: fj.taigi.idv.tw