首页
/
每日頭條
/
科技
/
在linux下怎麼運行c語言編程
在linux下怎麼運行c語言編程
更新时间:2025-12-04 00:56:52

在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
推荐阅读
lcd屏怎樣處理漏液
lcd屏怎樣處理漏液
今天小編給大家介紹一下關于LCD液晶屏漏液的原因以及如何解決的相關事宜:LCD液晶屏漏液的原因筆記本或液晶顯示器表面有非常明顯的塊狀黑斑,或者有明暗不均的斑塊同時有裂紋。液晶顯示器受到外力擠壓或撞擊,造成液晶屏破裂而出現漏液現象。受外力不太...
2025-12-04
怎麼拍抖音視頻
怎麼拍抖音視頻
怎麼拍抖音視頻?打開抖音短視頻,點擊+号,長按紅色圓圈進行拍攝待拍攝完成後,跳轉到視頻編輯界面可以對視頻進行添加特效或濾鏡,然後點擊選配樂,下面我們就來聊聊關于怎麼拍抖音視頻?接下來我們就一起去了解一下吧!怎麼拍抖音視頻打開抖音短視頻,點擊...
2025-12-04
河南開設數字媒體
河南開設數字媒體
7月11日,CTR發布2022年上半年主流媒體網絡傳播力報告。河南廣電深耕短視頻渠道,在短視頻分榜中保持排名第二位,在38家省級以上廣電機構網絡傳播力榜單中排名第三位,在自有APP、微博和其他第三方渠道分榜中均入圍TOP10。2022年上半...
2025-12-04
福建原裝活性炭吸附箱環保設備
福建原裝活性炭吸附箱環保設備
活性炭吸附箱,設備材質和參數均采用定制模式,同時也有公司的标配參數提供參考:1.型号:JL-HXT-05K,處理風量5000m³/h,外形尺寸(長*寬*高)990*1015*1280mm,法蘭口徑830*970mm,抽屜規格/數量1010*...
2025-12-04
噬血代碼價格
噬血代碼價格
今天是杉果雙旦特惠的第五日,依照慣例,每日限時特惠陣容在中午12點進行了更新。日漫風ARPG《噬血代碼》再迎半價特惠,券後126元即可入手;《上古卷軸5:天際特别版》《神力科莎終極版》《堕落之王年度版》等傳家寶均帶來了大家熟悉的好價.......
2025-12-04
Copyright 2023-2025 - www.tftnews.com All Rights Reserved