gcc 一些常規巨集,有助手幫助除錯

2021-07-01 20:48:39 字數 787 閱讀 3287

關於gcc 除錯的時候, 有時候為了便於快速定位所要列印的除錯資訊, 可以方便地呼叫提供的一些巨集.

__file__ 除錯資訊所在的檔案

__line__ 除錯資訊所在的行

__date__ 除錯資訊列印日期

__time__ 除錯資訊列印的時間

__func__ 除錯資訊所在的函式

常常可以看到很多開源方案中有這類應用:

#define debug_print(format,...) fprintf(stderr,"[debug: ][filename: %s][line: %d] "format, ##__va_args__)

對了, 關於 #, ##, ##__va_args__ 應用如下

1. #define p(x) printf(#x "value is: %d", x) //起替換作用

int main(void)

列印出: y value is 10;

2. #define p(n) x##n

int main(void)

會列印出 10;

3. ##__va_args__ 可變引數替換

#define debug_print(format,...) fprintf(stderr,format, ##__va_args__)

int main(void)

c99編碼器 會自動檢查引數個數,若沒有,會自動去掉前面的 逗號。

上述一些特性 僅gcc 支援吧!

gcc一些命令

檢視版本用 v 預處理 gcc e hello.c o hello.i o是指生成的檔案叫什麼,這裡是叫hello.i gcc一部生成目標檔案 gcc c hello.c o hello.o gcc生成可執行程式 鏈結 gcc hello.0 o hello 用來注釋很方便 if 0或1 以 end...

git 一些常規指令

1.git初始化,新建乙個本地庫 git init 2.git help 檢視所有指令git help 3.git clone url 轉殖遠端庫 git clone 4.git remote add origin url 新增遠端庫 git remote add origin 5.git remo...

gcc 的一些用法

gcc編譯多個原始檔 一.常用編譯命令選項 假設源程式檔名為test.c。3.選項 e 用法 gcc e test.c o test.i 作用 將test.c預處理輸出test.i檔案。4.選項 s 用法 gcc s test.i 作用 將預處理輸出檔案test.i彙編成test.s檔案。5.選項 ...