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

在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
推荐阅读
造夢西遊4手機版活動最新公告
造夢西遊4手機版活動最新公告
新年新氣象,新年開新服!造夢西遊4手機版終于要開新服啦~為了迎接即将到來的元旦佳節,《造夢4》首個新服也即将震撼登場,想知道新開的服務器叫什麼名字嗎?趕緊來看看小編給大家帶來的最新爆料吧。造夢西遊4手機版更新說明更新獎勵:5W金币、5W靈魂...
2026-01-22
問界m5後驅百公裡加速實測
問界m5後驅百公裡加速實測
對于華為的問界M5,上市之初,用戶對于這款車可以說是非常的期待,但上市之後,打破了這種期待,往往希望越大,失望就越高,落到銷量上的表現也是非常的慘淡的,在2月底上市之後,3月份有3千台左右的交付,而4月份也是僅僅多了300台,當然這也跟很多...
2026-01-22
騰訊文檔怎麼變成文件
騰訊文檔怎麼變成文件
騰訊文檔怎麼變成文件?手機打開包含騰訊文檔的軟件,如QQ,搜索【騰訊文檔】,點擊打開它,現在小編就來說說關于騰訊文檔怎麼變成文件?下面内容希望能幫助到你,我們來一起看看吧!騰訊文檔怎麼變成文件手機打開包含騰訊文檔的軟件,如QQ,搜索【騰訊文...
2026-01-22
lol蠻王技能出裝
lol蠻王技能出裝
LOL的每一個不同版本中都會有新的英雄玩法以及套路誕生,很多玩家緻力于開發出各種各樣的玩法,在國服目前的9.11版本中,就有很多新的玩法套路出現,玩家們可以用這些玩法來在遊戲中打出讓對手意想不到的效果。上單:征服者潘森潘森在9.11版本的上...
2026-01-22
手機被惡意監聽怎麼辦
手機被惡意監聽怎麼辦
一個客戶質詢帽哥,說之前大意把手機借給了一個新同事,害怕他在自己手機裡下載了監控軟件,導緻自己的信息洩漏和被監控。為了保障安全,問我是否可以通過恢複出廠設置來解決一些問題?關于這一點,帽哥是深以為然的,現在很多人都覺得被監控不可能發生,其實...
2026-01-22
Copyright 2023-2026 - www.tftnews.com All Rights Reserved