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

在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、首先打開【手機微信客戶端】,需要更新到最新的版本,進入到主界面。2、點擊右下方【我的】進入個人中...
2026-01-17
移動157屬于什麼卡
移動157屬于什麼卡
以華為P40,Android11為例:157号段的手機卡既可以是神州行,也可以是動感地帶,或全球通,用戶可根據需求選擇。移動、聯通、電信三大運營商的手機号段大緻如下:移動号段有134、135、136、137、138、139、147、150、151、152、157、158、159、178、182、183、184、187、188。聯通号段有130、131、132、155、156、185、186、145
2026-01-17
pc材質是什麼材料
pc材質是什麼材料
1、pc是分子鍊中含有碳酸酯基的高分子聚合物,按酯基的結構可分為脂肪族、芳香族、脂肪族-芳香族等類型...
2026-01-17
如何教兒童畫趣味數字創意畫
如何教兒童畫趣味數字創意畫
第一、準備一張紙和一支粉色的彩筆。第二、先用彩筆在紙上畫一個8,表示小貓的頭和身體。第三、在8的上方畫兩個小三角,表示小貓的耳朵。第四、在小貓臉上畫兩個圓點,表示眼睛,在眼睛下面畫一個人字,表示小貓的嘴。第五、在小貓嘴的兩側各畫三條短線,表示小貓的胡子。第六、在8的右側畫一個6,表示小貓的尾巴,兒童趣味數字創意畫小貓就畫完了。
2026-01-17
如何給6個月以後的寶寶逐漸的添加輔食
如何給6個月以後的寶寶逐漸的添加輔食
第一、水果汁6個月的寶寶也可以适當的喝些水果汁了,比如火龍汁、蘋果汁、梨汁等等。第二、肉類6個月的寶寶也可以吃一些肉類食品,但應該先把肉攪碎了才可以給寶寶吃,比如一些魚類、豬肉等食物。第三、米湯米湯中富含維生素等成分,能夠促進寶寶的消化,因此,也可以給寶寶喂一些米湯,米湯伴蛋黃給寶寶吃。第四、雞蛋黃雞蛋黃中含有很多的營養成分,能夠給大腦補充營養,因此,可以給寶寶吃一些雞蛋黃,但不要喂太多了,以免消
2026-01-17
Copyright 2023-2026 - www.tftnews.com All Rights Reserved