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

在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
推荐阅读
如何安裝ubuntu
如何安裝ubuntu
1、電腦以U盤的方式啟動後,将直接進入系統安裝界面,我們點擊installubuntu準備開始安裝系...
2026-01-16
電腦脫機工作該怎麼辦 電腦如何取消脫機工作
電腦脫機工作該怎麼辦 電腦如何取消脫機工作
電腦是我們日常工作和生活中必不可少的電子設備之一,在使用的過程中有些人不知道電腦如何取消脫機工作,不要着急,今天的這篇經驗就來分享一下電腦如何取消脫機工作。1、打開電腦,按下“Win+R”組合鍵,并輸入“compmgmt.msc”後點擊“确定”按鈕。2、在雁關爺新界面的左側找到并點擊“服務和應用程序...
2026-01-16
國産小型suv排名是什麼
國産小型suv排名是什麼
1、遠景X3。遠景X3采用了水滴漣漪造型前進氣格栅,雖然吉利這些年在SUV外觀設計上也走着套娃”方向,不過風格上還是能夠感受之間的區别,遠景X3風格更靈動,整體造型非常舒展。2、瑞虎3x。不規則是瑞虎3x設計的主要元素,無論從進氣格栅、前大燈、霧燈組、尾燈等等都是采用了不規則形狀,盡顯年輕人個性不從...
2026-01-16
微信怎麼删除已經添加的表情
微信怎麼删除已經添加的表情
1、首先,我們随便點擊進入一個聯系人界面,點擊進入自己所添加的表情界面。2、在所有表情的最右方(可能...
2026-01-16
最适合跑長途的150摩托車有哪些
最适合跑長途的150摩托車有哪些
1、豪爵GZ150-EGZ150是一款比較經典的美式巡航太子車,雖然升級改款後它的車标發生了變化,但按照它的性能這款車長途騎行的話,還是比較适合的。首先,它搭載的發動機具有皮實耐用的特點,所以整個騎行過程中出現故障的幾率将會比較低,再者這款車相比跨騎類摩托車,在乘坐舒适性上将會有一定的優勢,所以它可...
2026-01-16
Copyright 2023-2026 - www.tftnews.com All Rights Reserved