gdb 除錯巨集定義macro

2022-05-22 05:54:07 字數 996 閱讀 5502

c語言中的巨集定義,有著各種好處,當然也有它不好的一面。它實現的三個主要功能是:

1)字串替換

2)標頭檔案包含

3)通用**模組的擴充套件

在**除錯時候,除錯巨集定義是比較麻煩的一件事,下面就介紹一種比較簡單的方法。

#include#define max(a, b)  ((a) > (b) ? (a) : (b))

#define min(a, b) ((a) < (b) ? (a) : (b))

int main(void

)

如果我們需要除錯巨集定義的話,就需要更高階別的除錯資訊,-g3

gcc –g3 test,c

gdb a.out

這樣我們就能除錯巨集定義了。

除錯巨集定義我們主要使用幾個gdb命令如下:

1)  macro define --                       定義乙個新的的巨集定義    如:macro define a 3

2)  macro expand  macroname    展開巨集定義 如: macro  expand min(a, b)

3)  macro  list  macroname          列出所有用macro define -- 這條命令定義巨集定義   如:macro list a

4)  macro undef macroname        撤銷macroname巨集定義

5)  info macro macroname           顯示巨集定義,包括在**定義,怎麼定義。   如info macro min

如下圖:

另外由於巨集定義在除錯的過程中比較複雜,所以我們應該少用巨集定義,盡量用enum inline 來替換。

巨集 macro 定義與使用

巨集的定義 巨集的替換與 展開 巨集的替換產生的問題 獲取巨集引數名稱 巨集引數的結合 巨集的取消 巨集定義的換行連線 標準預處理巨集 巨集 macro 是基於 define所實現的另一種預處理功能。與基本的 define定義的是常量相比,巨集 macro 允許多個引數化替換,引數中可以是固定的字串...

巨集 macro 定義的簡介

1.1巨集的簡單使用說明 define square x x x 下面我們就來用一下這個巨集 printf result d n square 5 無可厚非,結果就是5 5 25 int a 5 printf result1 d n square a 1 第一眼可能會脫口而出36,但是你文字替換一下...

SV 巨集定義(macro)引發的災難

在開發中,用巨集定義可以帶來很多方便,但是使用不當,也會帶來災難,並且不容易debug出來,如下圖所示的程式碼 define switch 64 128 bit 0 define svt axi max data widtn d64 switch 64 128 bit d64 int lane nu...