首页
/
每日頭條
/
科技
/
在linux下怎麼運行c語言編程
在linux下怎麼運行c語言編程
更新时间:2025-07-19 12:59:06

在linux下怎麼運行c語言編程(linux的C語言編程技巧)1

今天在閱讀linux代碼的時候,看到linux很多代碼都用了:剛開始以為這是多此一舉,既然是while(0),那麼寫和沒寫都是一個樣。但是在好奇心的驅動下,查閱了許多資料後,發現,這句代碼真的是“神”一般的操作,那麼它到底有什麼作用呢?

一,避免使用goto控制流程:

我們在一些函數中,如果在退出前,需要一些清理工作,正常情況下,我們可以使用goto來實現,比如:

int foo() { somestruct *ptr = malloc(...); dosomething...; if(error) goto END; dosomething...; END: free(ptr); return 0; } 但是由于goto

但是由于goto不符合結構化設計,很多人都不倡導使用,這時候就可以使用do while了:

int foo() { somestruct *ptr = malloc(...); do { dosomething...; if(error) break; dosomething...; } while(0); free(ptr); return 0; }

這裡将函數主體部分使用do{...}while(0)包含起來,使用break來代替goto,後續的清理工作在while之後,現在既能達到同樣的效果,而且代碼的可讀性、可維護性都要比上面的goto代碼好的多了。

二.避免宏定義的一些編譯或者錯誤:

我們假設定義一個宏:

#define DELETE_IT(p) delete p; p = NULL;

那麼在下面的代碼中:

If(NULL!=p) DELETE_IT(p) else .......

宏會被展開成:

If(NULL!=p) delete p; p=NULL; else ........

那麼就存在兩個問題:

1,編譯錯誤:因為if分支後面有兩個語句,導緻else分支沒有對應的if

2,邏輯錯誤:假設沒有else分支,則SAFE_FREE中的第二個語句無論if測試是否通過,都會執行,這個就很嚴重

那麼有什麼辦法解決這個問題嗎?答案是有,do while就是用來解決這個問題的:

#define DELETE_IT(p) do { delete p; p=NULL; } while(0);

這樣定義,展開後,就變成:

If(NULL!=p) do { free(p); p=NULL; } while(0); else .......

這樣就可以避免上面的問題了

即學即用的技巧,可以在代碼秀一下了

,
Comments
Welcome to tft每日頭條 comments! Please keep conversations courteous and on-topic. To fosterproductive and respectful conversations, you may see comments from our Community Managers.
Sign up to post
Sort by
Show More Comments
推荐阅读
excel2010怎麼制作九九乘法表
excel2010怎麼制作九九乘法表
上面的九九乘法口訣表是如何制作的呢?方法很簡單,隻需6步。第1步:在”B1:J1”和”A2:A10”單元格區域中,分别輸入數字1~9。如下圖示:第2步:選擇”B2”單元格,在編輯欄中輸入公式【=B$1&"x"&$A2&"="&B$1*$A2...
2025-07-19
pdf最好用的編輯軟件免費
pdf最好用的編輯軟件免費
PDF格式文件對于現在的職場人來說,已經不是什麼特别的格式了。平時工作的時候就很經常會接觸到,因為它具有不易編輯性和兼容性高的特點,能夠實現在不同的設備上打開,并且不會影響到它的内容排版,很多企業都愛用。雖然但是,pdf文件的編輯還是帶來了...
2025-07-19
strandeddeep新遊戲設置
strandeddeep新遊戲設置
近期被騰訊收購,《流放者柯南》開發商Funcom正在開發以作者FrankHerbert的《沙丘》世界為背景的多人生存遊戲,現在開發工作室NUKKLEAR正在幫助完成項目并在遊戲載具方面提供他們的專業知識。NUKKLEAR并不是一個衆所周知的...
2025-07-19
拼夕夕百億補貼安卓手機靠譜嗎
拼夕夕百億補貼安卓手機靠譜嗎
相信大家在拼夕夕上買東西而不是在某東,當然就是圖便宜了,但是正所謂一分錢一分貨,天下沒有免費的午餐,那麼百億補貼真的靠譜嗎,本文主要是從避免翻車(買到後封機)的角度來為大家提供幫助一:什麼是後封機所謂後封機,一般指拆開了原包裝後,甚至開機把...
2025-07-19
手機換屏顯示紅外遮擋是怎麼回事
手機換屏顯示紅外遮擋是怎麼回事
手機換屏顯示紅外遮擋是怎麼回事?聽筒附近有髒物,請清潔後再使用;,接下來我們就來聊聊關于手機換屏顯示紅外遮擋是怎麼回事?以下内容大家不妨參考一二希望能幫到您!手機換屏顯示紅外遮擋是怎麼回事聽筒附近有髒物,請清潔後再使用;屏幕貼了較厚或不透明...
2025-07-19
Copyright 2023-2025 - www.tftnews.com All Rights Reserved