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

在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
推荐阅读
太陽有多少噸
太陽有多少噸
1、太陽質量:1.9891*10^30千克。2、太陽是位于太陽系中心的恒星,它幾乎是熱等離子體與磁場...
2026-01-09
win10徹底删除ie11
win10徹底删除ie11
演示機型:華為MateBookX系統版本:win1020H2APP版本:IE11浏覽器11.0.131、在Windows10桌面系統,右鍵點擊開始菜單按鈕,在彈出菜單中選擇“程序和功能”菜單項。2、這時會打開“程序和功能”窗口,點擊左側邊欄上的“啟用或關閉Windows功能”快捷鍊接。3、這時會打開Windows功能窗口,找到InternetExplorer11一項,把其前面的勾選去掉。4、彈出關
2026-01-09
安卓手機怎麼弄賽博朋克風格
安卓手機怎麼弄賽博朋克風格
1、首先我們先來分析一下我們的調整思路,我們可以看到賽博朋克風的主要特點是紅藍色調,整體亮度偏低。所...
2026-01-09
汽車發動時聲音大是什麼原因
汽車發動時聲音大是什麼原因
1、發動機有咝咝的聲音,跟蒸氣或者空氣從發動機裡面出來一樣,一般聽見這種聲音以後,發動機會迅速的損失動力。可能問題,發動機過熱,檢查冷卻系統。排氣系統堵塞,真空管洩漏,或者斷裂。2、踩油門,發現加速不明顯,缺乏動力,發動機有歇斯底裡的聲音。最可能出現的時候是在發動機熱,或冷的時候,或者缺油的時候。造成此類毛病的原因可以分為,空濾,火花塞,點火線,汽油,汽油濾,氣化器,油泵等問題。檢查空濾,是不是髒
2026-01-09
蘋果桌面app圖标設置方法
蘋果桌面app圖标設置方法
1、首先打開手機,按home鍵回到手機桌面。2、點擊長按手機桌面上任何一個圖标,比如”設置“。3、待...
2026-01-09
Copyright 2023-2026 - www.tftnews.com All Rights Reserved