gcc或clang中消除特定警告的方法

2021-06-26 13:46:29 字數 1140 閱讀 3373

一般在編譯**時會有相當多的警告資訊,尤其當我們使用了-wall選項的時候.-wall絕不是像其字面意思一樣開啟所有警告.不過它開啟的警告也相當多了.對於一些我們已知"無害"但仍然列印出來擠占可憐的控制台空間的警告,我們當然可以將其"遮蔽"掉.

就拿以下**來說:

#include #include #include #include int main(void)

其會生成乙個所謂的"三字元組符號"使用的警告,假設這正是我們需要的效果,所以我們可以忽略該警告.我們編譯一下看看先(無論用gcc還是clang):

gcc:

wisy@wisy-thinkpad-x61:~/src/c_src$ gcc -wall -std=c11 -o3 -g0 -s -o x x.c

x.c: in function 『main』:

x.c:9:21: warning: trigraph ??( converted to [ [-wtrigraphs]

puts("hello world!???(y/n)");

^

clang:

wisy@wisy-thinkpad-x61:~/src/c_src$ clang -wall -std=c11 -o3 -g0 -s -o x x.c

x.c:9:21: warning: trigraph converted to '[' character [-wtrigraphs]

puts("hello world!???(y/n)");

^1 warning generated.

不過在去掉-wall警告後,可以發現沒有任何警告,一切都安靜了.但這不是我們想要的,因為可能放過一些真正隱含錯誤類的警告.大家可以看到警告提示中寫明了該警告的型別:-wtrigraphs.我們只要加上在w後面加上no即可遮蔽該警告,不過要放在wall選項後面,如果放在前面,仍然會有警告哦.編譯器應該是以最後乙個"有效"選項為準呀!

wisy@wisy-thinkpad-x61:~/src/c_src$ gcc -wall -wno-trigraphs -std=c11 -o3 -g0 -s -o x x.c

Git忽略檔案中的特定行或多行

在開發時,不可避免的在測試環境加了一些測試用的 和自己用的測試庫,為了不影響整個團隊的開發和專案 維護,在實際推送的時候不希望這些 也同步推上去。於是就希望在提交時能忽略那幾行測試 方法 通過git 的filter來過濾 1 在專案根目錄建立.gitattributes檔案,檔案內容 js filt...

MySQL 替換查詢結果中的null或特定字元

偶爾會遇到有人問,表裡某個列存在null值,查詢結果集裡想要把null替換成特定的字元,怎麼做?看到有人寫了各種各樣比較複雜的sql,其實在mysql裡只要乙個函式就能搞定,那就是ifnull,長話短說,看例子 將結果集中的null替換成 空 mysql select id from test id...

關於檢索 替換文字中特定字元或字串的方法

昨天,別人提出了,要統計一條微博內容中,有多少表情 了多少人 包含了多少主題等。這個需求,經過查閱網上的資料了解到,通過正則匹配就能解決。方法比較簡單。內容如下 pattern p pattern.compile regex matcher m p.matcher text while m.find...