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

在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
推荐阅读
手機中毒綜合症人員數據
手機中毒綜合症人員數據
外媒所說“數字中毒”其實就是我們常說的手機綜合征。估計現在多數人對此都有深切體會。手機已成為人們重要信息來源、社交工具、支付工具乃至生産工具,更成為精神依賴,得其利受其害。手機中毒早已成為家庭問題、教育問題,甚至社會問題。玩手機與抽大煙手機...
2025-07-11
電影無問西東編劇
電影無問西東編劇
港片曾經出了一部電影《一路向西》,很特别,即使現在也很難看到它的蹤影,豆瓣沒有評分,在線看不了,一部隻能流竄于硬盤和網盤的片子。而影片是根據向西村上春樹的作品《東莞的森林》改編而成的電影。這作者,同樣神秘,我們認識日本的村上春樹,向西村上春...
2025-07-11
電腦一直無限重啟開不了機
電腦一直無限重啟開不了機
電腦一直無限重啟開不了機?我們在使用電腦的時候,有時候會出現電腦一直重新啟動,就是無法開機的情況出現這種情況,主要是電腦的硬件問題包括電源,主闆或主闆上的闆卡,根本沒有到讀操作系統那一步就自動重啟了,還有就是機箱的開關有問題導緻的,接下來我...
2025-07-11
到了什麼時候适合換新手機
到了什麼時候适合換新手機
很多朋友都在問現在買手機便宜嗎?要等多久手機才會降價,之類的話題經常能看到,其實下半年隻剩最後三個月了,那麼換手機在幾月換比較合适呢?記住這三個時間點!第一個時間點:九月下旬十月初金九銀十,可以說是各個行業為年底沖鋒的月份,一些降價活動都會...
2025-07-11
不會寫文案怎樣找精辟的文案
不會寫文案怎樣找精辟的文案
​​“寫作”是新媒體人繞不開的能力。不過,你不得不承認,有很多寫作内容,你明明知道它很重要,但就是寫不出來——譬如,寫故事、寫金句。怎麼辦?不用糾結,古人雲“工欲善其事,必先利其器”,你可以借助一些工具,尋找創意與素材。今天勾老師給大家推薦...
2025-07-11
Copyright 2023-2025 - www.tftnews.com All Rights Reserved