C語言中的Warning到底調不調

來源:互聯網
上載者:User
其實大多數的C語言工程師是不調Warning的,但是如果你和我一樣是一個賤婊子,不調手難受,不調心痒痒,不調戲一下Warning就睡不好覺。那麼告訴你一個Warning的調戲經驗。

首先在調戲Warning之前,咱先得把Error這位爺請走。也就是說先調Error。把所有的Error都撂倒之後呢,也不保證程式就沒錯了不是。還有一些不報Error的bug。雖然bug不影響咱們調戲Warning。但是爺要調戲小娘子的時候,有外人看著怎麼會盡興。

當然了bug往往是修補不乾淨的(用タカキさん的話說“中國有句古話叫雞蛋裡挑骨頭”)那麼個別不影響正常程式使用的賤bug就讓他觀摩吧。

某些新人程式員如果不知道怎麼把Error這位爺請走,那麼我也說一下吧。

Error一般是由於語法錯誤引起的。常見的錯誤一般是拼字錯誤(太著急調戲小娘子,大哥你也不能按那麼快啊),還有就是沒打分號或者分號打成逗號,當然也有某些“處男”還會中文標點的問題報錯。

當然我們也經常遭遇一些奇怪的Error,這類爺本來就是找茬兒來的。看看有沒有中文路徑的問題,有的Error甚至是重新開啟編譯器就能好。實在不行 百度,Google,必應,等等等。(Google似乎還是需要翻*qiang,我習慣使bing必應,個人有個人的習慣,的確很多人在用Google。推薦初學者使用百度,初學者常見Error在百度都被人答爛了。畢竟Google現在好像還是要翻*qiang的,我這種賤人就不喜歡翻*qiang)

那麼各位爺,開始解皮帶吧。

先調戲能刪的。有的時候聲明了變數或者函數然後一直沒用。這是一種常見的Warning婊,我的經驗是刪之。即使有的變數是明知後續升級時會用到的東西。如果沒有完全確定必要預留,那麼下版的事兒下版再說。當然了如果聲明的函數是已經寫好了但是沒有用的,可以收集起來,留著以後用,但是要是和這個程式沒關係還是刪掉的好。雖然我一般的做法是只刪多聲明的變數不刪多聲明的函數。

傳回值沒有變數接受,某些非空函數的傳回值幾乎無意義,成功返回1失敗返回0什麼的。這種傳回值如果套在分支裡可能還有點兒用。其實人家本來寫那個函數就是方便打入分支的。那麼既然沒在分支裡面。這個值也沒啥大用的話,這種小婊砸就打入冷宮吧。假裝沒看見。

調用了某標頭檔的函數但是沒有把標頭檔包括進來。

比如:warning: type mismatch with previous implicit declaration

implicit declaration of function '***'

這種把標頭檔包括進來就行了。

列表和調用不對應too few arguments for format

比如:printf("%4d %4d",a);

這樣要麼就補一個,剛才是不是覺得有個值老是顯示不出來,還以為是bug呢吧。嘿嘿

當然了,也有某些仁兄是手抖多打了一個,那刪唄。

邏輯運算子 或/且 不知道式子兩邊的範圍。

我的習慣是把或和且的兩邊都帶上括弧,所以我很少遇到這個warning,畢竟遇到這個還有分析當時的邏輯關係,挺耽誤時間的,不如之前就養成好習慣。當然您要是非要留著玩兒解悶兒,我不也沒辦法嗎。那您就趕緊關起門來和您的warning小娘子過二人世界吧。

運算對值沒意義

比如您是這樣聲明的 int *p;

然後您這樣*p++;

我覺得您的意思是不是(*p)=(*p)+1;

您自己再看看您當時想表達啥。

redefined,這個是聲明多次的意思。那就聲明一次好咯,用 #ifndef 就能巧妙的避免這種情況。

if的分支或者while的迴圈不可能被執行到,您定義個unsigned然後一個if判斷他是不是負數。該刪就刪吧。

還有一種warning是參數類型不一致,加強制類型轉化唄。

無論您如何調戲,您最好改一步就重新編譯運行一次。原則是調戲Warning的過程中不能產生Error或者新的bug。

祝各位單身的爺順利勾引到warning小娘子,我回家和夫君去做羞羞的事情了。

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.