作者uranusjr (←這人是超級笨蛋)
看板C_and_CPP
標題Re: [問題] 編譯器 關掉特定 warning
時間Thu Mar 14 12:41:45 2013
※ 引述《xxxx9659 (嘎嘎嘎嘎嘎)》之銘言:
: 程式常常寫錯,為了比較好 debug
: 所以編譯的時候會對 gcc 下 -Wall 跟 -Werror 參數
: 對於一些我覺得不太重要的 warning 不知道怎麼關掉
: 例如,我想要把這兩個 warning 關掉
: void fn1(){
: int a = 1;
: (a == 10) && printf("a 等於 10\n");
: // warning: value computed is not used
: }
: void fn2(){
: int a;
: // 這個程式還沒開始寫,只是先寫出架構
: // warning: unused variable 'a'
: }
: 上網查到這樣可以關
: #pragma warning(push)
: #pragma warning(disable : warning id )
: //程式...
: #pragma warning(pop)
: 但是我不知道這兩個 warning 的 id 是多少
: 請問 warning id 有表可以查嗎?
我個人比較建議明確的在程式裡標明「這個狀況」不要顯示警告
而不是一股腦把所有這種警告都關掉
這些警告的存在是有意義的, 如果你哪天真的寫錯也是要靠它們
這類警告其實也很好繞過
有很多函式庫都會提供類似的東西
例如 Qt 就有
#define Q_UNUSED(arg) (void)(arg)
這樣你上面的只要多寫一行
Q_UNUSED(a)
就可以避免掉警告
另一個...雖然我知道這樣比較快不過寫成 if clause 還是比較好吧
不然其實 Q_UNUSED((a == 10) && printf("a 等於 10\n")); 這樣也行
--
作者 Linux (Windows) 看板 C_and_CPP
標題 [問題] 如何確認是否 free 對記憶體
時間 Fri Nov 2 00:14:03 2012
→ akasan:valgrind, 但 windowns 版的沒試過XD 11/02 00:43
→ akasan:linux 上那真的是不二選擇了 11/02 00:44
→ Linux:我是用 Windows ....>"< 11/02 00:45
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.133.47.18
※ 編輯: uranusjr 來自: 220.133.47.18 (03/14 12:42)
推 damody:推簽名檔~ 03/14 12:53
→ shadow0326:簽名檔也太好笑 XDD 03/14 13:03
推 diabloevagto:簽名檔! 03/14 13:40
推 xxxx9659:謝謝回答!!用 UNUSED( ) 是個好方法 03/14 14:42
推 xxxx9659:可是之前有遇過用了 UNUSED() 還是沒辦法抑制 warning 03/14 14:55
→ xxxx9659:不知道是不是編譯器太強知道 UNUSED( ) 是在作無效的動作 03/14 14:57
推 damody:回樓上,應該是警告的東西不同 03/14 20:54
→ damody:unused 是用在 傳入參數未使用的狀態 03/14 20:55