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

在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
推荐阅读
playstation年度最佳遊戲
playstation年度最佳遊戲
新的PlayStationPlus版本中最昂貴的變體将能夠訪問PS1、PS2和PSP的遊戲庫一位Reddit用戶發現,過去幾代人的經典作品已經被灌入PlayStation數據庫,使得從即将到來的選擇中發現幾部作品成為可能因此,在PlaySt...
2026-01-03
裝修有什麼軟件可以接單的
裝修有什麼軟件可以接單的
在人們生活水平不斷提升的今天,人們對裝修的要求也越來越高,裝修也日漸受關注,越來越多的裝修公司成立,裝修行業的競争日趨激烈,如何找客源也成為了諸多裝修公司需要一直思考的問題。互聯網的發展讓很多裝修接單軟件成為裝修公司的必備渠道。裝修接單軟件...
2026-01-03
手機突然收到各種各樣的驗證碼
手機突然收到各種各樣的驗證碼
在移動互聯網時代,一個用戶的定義往往并不是一個自然人,也不是一台關聯電腦,而是一個關聯手機号。對平台來說,一個手機号就代表一個實名認證的ID,也必須有一個手機号才能收到平台發放的手機驗證碼。手機号不夠用的時候怎麼辦呢?用戶往往就會用自己的第...
2026-01-03
固态硬盤是拯救老電腦的神器嗎
固态硬盤是拯救老電腦的神器嗎
電腦開始卡了,到底有沒有必要換一台新的呢?以前,總有這樣的尴尬處境:不換,用着難受;換吧,又是一筆不小的支出。其實對于普通用戶來說,升級電腦,有個優先級:1,優先考慮更換固态硬盤,是搞定電腦運行緩慢最直接、最有效的方式。2,是當内存容量顯示...
2026-01-03
新版本黑暗裝備怎麼弄
新版本黑暗裝備怎麼弄
新版本來襲!你不得不知的材料獲取與裝備制作作者:毓橘子新春版本帶來的不僅僅是等級解禁,還有諸多與等級相關的新史詩裝備以及材料。新春時節不免迎來一大批回歸玩家以及萌新入坑,因為更新的東西較多,所以橘子在此為勇士們準備了關于更新的新材料、新裝備...
2026-01-03
Copyright 2023-2026 - www.tftnews.com All Rights Reserved