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

在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
推荐阅读
怎樣看微信狀态
怎樣看微信狀态
微信狀态查看需要打開微信APP,點擊頁面右下角的“我”的圖标,然後點擊頁面中部的“朋友圈”選項,進入相冊頁面後點擊“狀态”選項,最後點擊頁面底部的“視頻動态曆史”即可查看以往的微信狀态。1、微信查看狀态首先需要打開微信APP,點擊頁面右下角的“我”的圖标。2、然後點擊我的頁面中的“朋友圈”選項。3、...
2026-01-27
微信上傳身份證照片要多久才能通過
微信上傳身份證照片要多久才能通過
微信上傳身份證照片一般審核時間為1到3天,微信上傳身份證照片需要打開微信APP,點擊右下角“我”的圖标,然後點擊我的頁面中的“支付”選項,之後點擊右上角的“三點”符号,再點擊“實名認證”,最後點擊“身份證照片”即可上傳。1、微信上傳身份證照片首先需要打開微信APP,點擊首頁右下角“我”的圖标。2、然...
2026-01-27
怎麼恢複手機手寫功能
怎麼恢複手機手寫功能
恢複手機手寫功能需要打開手機的輸入框頁面,點擊輸入框左上方的第二個圖标,然後點擊“半屏手寫”選項或者“全屏手寫”選項,然後在輸入框的空白區域即可進行手寫輸入。1、手機打開手寫功能首先需要将手機的輸入法界面打開,點擊輸入框左上方的“第二個”圖标。2、然後選擇“半屏手寫”選項或者“全屏手寫”選項。3、在...
2026-01-27
支付寶删了對方又加回知道嗎
支付寶删了對方又加回知道嗎
支付寶删了對方又加回對方是不會知道的,支付寶删除好友需要打開支付寶APP,點擊頁面下方的“消息”圖标,然後點擊右上角的“人像”圖标,之後點擊對方的頭像,再點擊右上角的“朋友設置”圖标,最後點擊“删除”選項即可。1、支付寶删除好友首先需要打開支付寶APP,點擊首頁下方的“消息”圖标。2、進入消息頁面後...
2026-01-27
京東省錢卡在哪裡
京東省錢卡在哪裡
京東省錢卡查找需要打開京東APP,點擊右下角的“我的”選項,然後點擊我的頁面中的“我的錢包”圖标,将頁面滑到最底部,點擊“京東省錢卡”圖标,最後點擊頁面中的“立即開通月卡,買一單即回本”選項即可。1、京東查找省錢卡首先需要打開京東APP,點擊頁面右下角的“我的”選項。2、然後點擊我的頁面中部右側的“...
2026-01-27
Copyright 2023-2026 - www.tftnews.com All Rights Reserved