Re: [問題] 編譯器 關掉特定 warning

看板C_and_CPP作者 (←這人是超級笨蛋)時間11年前 (2013/03/14 12:41), 編輯推噓5(503)
留言8則, 4人參與, 最新討論串2/5 (看更多)
※ 引述《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

11/02 00:43,
valgrind, 但 windowns 版的沒試過XD
11/02 00:43

11/02 00:44,
linux 上那真的是不二選擇了
11/02 00:44

11/02 00:45,
我是用 Windows ....>"<
11/02 00:45
-- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.133.47.18 ※ 編輯: uranusjr 來自: 220.133.47.18 (03/14 12:42)

03/14 12:53, , 1F
推簽名檔~
03/14 12:53, 1F

03/14 13:03, , 2F
簽名檔也太好笑 XDD
03/14 13:03, 2F

03/14 13:40, , 3F
簽名檔!
03/14 13:40, 3F

03/14 14:42, , 4F
謝謝回答!!用 UNUSED( ) 是個好方法
03/14 14:42, 4F

03/14 14:55, , 5F
可是之前有遇過用了 UNUSED() 還是沒辦法抑制 warning
03/14 14:55, 5F

03/14 14:57, , 6F
不知道是不是編譯器太強知道 UNUSED( ) 是在作無效的動作
03/14 14:57, 6F

03/14 20:54, , 7F
回樓上,應該是警告的東西不同
03/14 20:54, 7F

03/14 20:55, , 8F
unused 是用在 傳入參數未使用的狀態
03/14 20:55, 8F
文章代碼(AID): #1HGLKCdp (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1HGLKCdp (C_and_CPP)