首页
/
每日頭條
/
科技
/
在linux下怎麼運行c語言編程
在linux下怎麼運行c語言編程
更新时间:2026-01-27 17:12:56

在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
推荐阅读
石英砂支撐劑生産工藝
石英砂支撐劑生産工藝
石英砂支撐劑生産工藝?20世紀50年代中期以前漫長的時期内,各種中、大型鑄件和厚壁鑄件都用黏土砂烘幹型制造的采用這種工藝時,造型周期長、需大型烘幹設備、能耗很高,而且鑄件的尺寸精度和表面質量都不能令人滿意自從上世紀50年代後期呋喃樹脂自硬砂...
2026-01-27
隆回線上智能營銷工具如何做
隆回線上智能營銷工具如何做
除了社交功能之外,微博的開放式傳播特點使其具有天然的媒體屬性。微博不僅可以作為企業的官方信息發布平台,還可以作為企業的“新聞發言人”,成為企業的核心宣傳出口。微博具有的透明高效的傳播特點,能降低信息在傳播過程中夾帶雜質的可能性,所以很多企業...
2026-01-27
防摔性最好的手機殼
防摔性最好的手機殼
“隻要你敢摔!決色就送你價值218元的高端防摔手機殼,拍摔機小視頻還有機會獲得最高5000元現金!”這是決色品牌12月9日官方發布的全民摔機挑戰賽,活動一經上線,就燃爆了整個數碼科技圈。12月10日話題#決色摔機賽蘋果篇#首登微博熱搜榜,排...
2026-01-27
手機電池保養方法
手機電池保養方法
手機電池保養方法?新購手機充電需注意新購手機的電池都是锂電池,廠商已經進行了激活處理,新的手機電池都會有餘電,因此新購手機的前三到五次充電為調整期,每次充電應保持在14小時以上以保證充分激活锂離子的活性,達到最佳使用效果,我來為大家科普一下...
2026-01-27
神奇的字符 入口
神奇的字符 入口
小夥伴們好啊,今天咱們分享一個字符提取的Excel實例。如下圖所示,希望從B列混合内容中,提取出最後一個斜杠後的内容。文藝青年C2單元格輸入公式,向下複制。=TRIM(RIGHT(SUBSTITUTE(B2,"/",REPT...
2026-01-27
Copyright 2023-2026 - www.tftnews.com All Rights Reserved