首页
/
每日頭條
/
科技
/
在linux下怎麼運行c語言編程
在linux下怎麼運行c語言編程
更新时间:2025-07-12 01:40:48

在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
推荐阅读
硬件功能測試和性能測試
硬件功能測試和性能測試
硬件狗狗這款軟件是綠色單文件版本的軟件,無廣诰零彈窗。在功能上,軟件不僅可以檢測硬件,監測硬件使用情況,并且還可以像lu大師一樣,對電腦性能進行跑分。軟件的主要功能區裡,分成了硬件檢測、我的硬件、性能跑分、系統狀态、軟件管理、排行榜和工具箱...
2025-07-12
微信投票怎麼弄這個新方式超方便
微信投票怎麼弄這個新方式超方便
小編發現最近很多網民在網上搜索微信群怎麼發起投票?現代人的日常生活和工作基本上已經離不開微信,有時候遇到一些需要大量征集大家意見的情況,可以借助投票活動來實現,可以省去大量的人工統計時間成本,那麼如何在微信群裡發起投票呢?其實方法很簡單,以...
2025-07-12
bartender怎麼排列多個模闆
bartender怎麼排列多個模闆
昨天推文介紹了如何在BarTender軟件裡創建新标簽模闆,模闆創建了以後,就可以編輯内容了。今天先給大夥講講在新标簽裡該如何建立文本,說的直白一些,就是編輯文字。1.點擊文字圖标“單行”,在标簽空白部分點擊後如下圖所示。(備注:選擇多行,...
2025-07-12
怎樣設置表格數據錄入方向的改變
怎樣設置表格數據錄入方向的改變
怎樣設置表格數據錄入方向的改變?Excel是Office套件中最通用和最有用的程序之一,也是辦公族最常用的軟件,今天就教給大家Excel怎麼調整單元格内容方向,接下來我們就來聊聊關于怎樣設置表格數據錄入方向的改變?以下内容大家不妨參考一二希...
2025-07-12
蘋果手機刷機之後無法激活怎麼辦
蘋果手機刷機之後無法激活怎麼辦
蘋果手機刷機之後無法激活怎麼辦?稍後重試,如果是蘋果的激活服務器繁忙等原因,過一段時間後重新激活就可以順利激活了如果多次重試仍無法激活,請嘗試下一步,接下來我們就來聊聊關于蘋果手機刷機之後無法激活怎麼辦?以下内容大家不妨參考一二希望能幫到您...
2025-07-12
Copyright 2023-2025 - www.tftnews.com All Rights Reserved