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

在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、天蠶絲座墊:它是采用天蠶絲材料制作而成的,性價比之高自然就不用說了。從外觀上看,它的光澤度非常不錯,而且手感柔和舒适,涼爽的感覺是真絲最大的特性。這種汽車座墊壽命一般可以使用5年,前提是保養和清洗的工作要做到細緻處。加入隻是沾上一點點的污漬,可以用專用清潔毛巾沾上水洗淨,或者還可以使用幹洗劑慢慢...
2026-01-09
汽車劃痕怎麼處理
汽車劃痕怎麼處理
1、清洗。首先要将漆面表層的上光蠟薄膜層、油膜及其它異物除掉,方法是采用脫蠟清洗劑對刮傷部位進行清洗,然後晾幹。2、打磨。根據刮痕的大小和深度,選用适當的打磨材料,如1500号磨石,9um的磨片或美容泥對刮傷的表面層進行打磨。打磨一般采用人工作業,也可以用研磨/抛光機或打磨機進行打磨抛光。打時要注意...
2026-01-09
随參信道的三個特點
随參信道的三個特點
1、輸入和輸出的所有通道,信号經過幾條傳輸路徑到達接收端,而且每條路徑的長度(時延)和衰減都随時間而變,即存在多路徑傳播現象;2、觀測表明,絕大多數信道是線性的,即輸出與輸入量之間的關系滿足疊加原理,但在某些情況下,信道可能具有非線性效應;3、能量通過通道衰減,或在傳播過程中引入損耗,信号的傳輸衰減...
2026-01-09
100mbps是幾兆寬帶
100mbps是幾兆寬帶
100mbps等于100兆每秒,Mbps就是兆每秒的英文縮寫。1、Mbps=Mbit/s即兆比特每秒。Millionbitspersecond的縮寫,傳輸速率是指設備的的數據交換能力,也叫“帶寬”,單位是Mbps(兆位/秒),目前主流的集線器帶寬主要10Mbps、54Mbps...
2026-01-09
計算機信息系統安全是指
計算機信息系統安全是指
演示機型:華為MateBookX系統版本:win101、實體安全:計算機系統實體是指計算機系統的硬件部分,應包括計算機本身的硬件和各種接口、各種相應的外部設備、計算機網絡的通訊設備、線路和信道等。2、運行安全:系統的運行安全是計算機信息系統安全的重要環節,因為隻有計算機信息系統的運行過程中的安全得到保證,才能完成對信息的正确處理,達到發揮系統各項功能的目的。3、信息安全:計算機信息系統的信息安全是
2026-01-09
Copyright 2023-2026 - www.tftnews.com All Rights Reserved