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

在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、之後會彈出一個對話框。3、最後用鼠标往下面拉,最下面一個就是調節字體的,改為正常就好了。
2025-07-12
移動送的盒子怎麼投屏
移動送的盒子怎麼投屏
1、先确保手機和電信安卓智能機頂盒都連接在同一區域網下。2、在手機上搜索、下載安裝一款多屏互動APP,如投屏神器。3、安裝完成後打開APP,進入APP主界面,點擊添加設備”,搜索找到電信機頂盒的名稱,點擊連接”即可建立連接。4、如果沒搜到則可以手動輸入電信機頂盒的IP地址進行連接,連接成功後,就可以...
2025-07-12
相機a檔位是什麼意思
相機a檔位是什麼意思
演示機型:華為P40系統版本:EMUI11.0.0以華為P40、EMUI11為例。A模式為光圈優先模式。該模式下可以自由改變光圈大小,而不用對快門速度進行調節。快門速度會随着光圈的變化而自動調節,從而保證獲得合理的曝光。光圈是決定畫面景物虛化與清晰的主要條件,甚至還在一定程度上決定着曝光量的多少,也就是畫面的明暗效果。因此,相機的光圈優先模式是最為重要的拍攝模式。M檔:M模式為手動模式,該模式下無
2025-07-12
蘋果手機分析數據怎麼删除
蘋果手機分析數據怎麼删除
演示機型:Iphone12系統版本:iOS14.41、首先打開手機,在桌面上找到并打開設置。2、進入新的頁面,下滑找到并進入隐私。3、找到并點擊分析與改進。4、在此頁面将共享iPhone分析關閉即可。蘋果手機使用小技巧:1、計算器妙用:iPhone手機裡的計算機,平時都是用來進行一些簡單的加減乘除。隻要将計算機橫向過來,就能開啟科學計算器,一些方程式、解根号等複雜運算,也能在這裡搞定。2、快捷拍照
2025-07-12
有鎖機和無鎖機有什麼區别
有鎖機和無鎖機有什麼區别
以iPhone12、ios14為例。主要區别在于:定義不同、、價格不同、支持運營商不同。1、定義不同:iPhone有鎖機就是帶有網絡鎖的機器也被稱為合約機。iPhone無鎖機也叫官方解鎖的手機,比如常見的國行、港、美無鎖,無鎖機是沒有綁定運營商的機器,可以随意進行升級。2、價格的不同:iPhone有鎖機是老外國外運營商簽約的機器,甚至外國打出買一送一的口号。而無鎖機在國内,甚至得花到5000-70
2025-07-12
Copyright 2023-2025 - www.tftnews.com All Rights Reserved