※ 引述《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