定製自己的列印函式 初級篇

2022-09-11 04:36:09 字數 968 閱讀 7392

平時在linux平台寫**的時候,雖然gdb的除錯功能很強大,但很多時候我更喜歡呼叫系統列印函式來除錯我的程式,可是直接呼叫的話難免顯得很愚蠢(中國好像就是不缺愚蠢的coder),除非我需要列印的地方不超過3處,否則我是絕對無法容忍的,可是應該怎麼做呢,別急,先去倒杯白開水,然後隨便泡點什麼,再坐下來一步一步慢慢的整理。

首先要先明確自己的需求,限於是初級篇,所以我設定的需求是:

要滿足以上需求,好像沒有比巨集定義更好的解決方案了,先來看乙個gcc風格的:

#define mydebug(format, args...)  printf(format, ##args)

如果你並不使用gcc來編譯你的c程式,那麼可以使用c99風格的方式:

#define mydebug(format, ...)  printf(format, ##__va_args__

)

至於用哪一種,我的建議是:雖然gcc風格的可讀性更好一點,但畢竟它不是c語言的標準,所以還是用標準風格吧。也

許有人會對『##』有所疑問,其實它的主要作用就是連線前後兩個引數,如果後乙個引數為空,就會去掉多餘的逗號,

防止語法上出現錯誤。

到目前為止上面的巨集定義只能滿足前兩個需求,下面讓我們來看看第三個需求,這時就需要用到

一些標準預定義巨集:

好像函式名相關的巨集還有__func__, __function__,至於到底用哪乙個,我想說的是「標準才是王道」。有了這些巨集,剩下的問題就很簡單了,現在讓我們一次性解決所有的需求,看劍:

#if 1

#define mydebug(format, ...) printf("[%s:%d] "format"", __file__, __line__, ##__va_args__)

#else

#define mydebug(format, ...)

#endif

定製自己的CentOS

1 在 root 目錄下面 找到install.log 檔案並把在檔案中以 installing 開頭的行中的軟體包名剪下到另乙個檔案中,但是在該軟體中還有以數字開頭的軟體,且把該軟體包名也存到 如 建立乙個檔名為 package.txt 命令 touch package.txt 注用於存放 rpm...

VLOOKUP函式的使用方法(初級篇)

上一講咱們學習了vlookup的基本用法和示例,本講將介紹vlookup在使用中的一些小技巧。一 vlookup多行查詢時複製公式的問題 vlookup函式的第三個引數是查詢返回值所在的列數,如果我們需要查詢返回多列時,這個列數值需要乙個個的更改,比如返回第2列的,引數設定為2,如果需要返回第3列的...

自己定製SPS的顏色

自己定製sps的顏色 通過昨天的學習,我知道可以使用css來定製sps站點的顏色,我以前也試過通過在管理介面上設定新的css路徑來更改sps站點的顏色,可以沒有成功。現在,我明白是因為自己放css檔案的路徑不對。我從原來的目錄下拷貝了乙個ows.css檔案,重新命名為ows zy.css,然後拷貝到...