首页
/
每日頭條
/
科技
/
在linux下怎麼運行c語言編程
在linux下怎麼運行c語言編程
更新时间:2025-12-18 10:50:03

在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
推荐阅读
怎麼讓橫屏錄制的轉換豎屏
怎麼讓橫屏錄制的轉換豎屏
大家有時候拍攝的或者下載的一些橫屏視頻,需要上傳到一些豎屏播放的一些視頻平台,這時候我們就需要對這些視頻就行一個轉換,這樣轉換之後再上傳的一個視頻才會讓我們的一個視覺效果達到最好,今天我們就來學習如何快速批量的将多個橫屏視頻轉換成一個豎屏視...
2025-12-18
18款寶馬3系操控講解
18款寶馬3系操控講解
30多萬繞不開的車型,新寶馬3系實車到店,外觀内飾動力大變新款寶馬3系實車到店了,作為30萬左右繞不開的車型,他都有哪些變化?這些變化背後都有哪些含義?以及iD8的操作系統到底牛在哪裡?今天趙老師會詳細幫大家解讀3系的變化,選購新老3系一定...
2025-12-18
文件目錄損壞且無法讀取删不掉
文件目錄損壞且無法讀取删不掉
首先,将有問題的USB閃存驅動器插入計算機,打開“我的電腦”,選擇USB閃存驅動器,然後使用向左按鈕選擇屬性。打開後,選擇“工具選項”,然後單擊“開始檢查”。接下來,選擇“自動修複文件系統錯誤”和“掃描嘗試恢複壞扇區”,然後單擊“開始”。掃...
2025-12-18
美圖v6手機拍照怎麼樣
美圖v6手機拍照怎麼樣
如果說魅族把手機發布會辦成了演唱會,那美圖手機的發布會簡直可以稱為時裝周了。美圖M6手機發布會開始的前一個小時,愛範兒(微信号ifanr)在場外的紅毯邊見證了Angelababy、李晨、天王嫂方媛等一衆明星及網絡達人們的盛裝登場。在這場可能...
2025-12-18
電腦設備編号怎麼查詢
電腦設備編号怎麼查詢
電腦設備編号怎麼查詢?鼠标右擊桌面上的“我的電腦”圖标,接下來我們就來聊聊關于電腦設備編号怎麼查詢?以下内容大家不妨參考一二希望能幫到您!電腦設備編号怎麼查詢鼠标右擊桌面上的“我的電腦”圖标。在彈出的快捷窗口中單擊“屬性”選項。在“系統屬性...
2025-12-18
Copyright 2023-2025 - www.tftnews.com All Rights Reserved