巧用巨集定義進行除錯

2021-06-01 13:25:28 字數 1059 閱讀 2781

巧用巨集定義進行除錯

在進行程式設計時,有時我們往往不希望借住於除錯工具(如:gdb, vc),而以輸出除錯資訊的方式進行除錯時,我們就可以借住於強大的巨集定義來進行除錯。

一、在gcc下的定義方法,因為gcc支援變引數的巨集定義,所以我們可以用如下定義:

#

ifdef debug

#define dbg(format, args...

)printf

(format,

##args)

#else

#define dbg(format, args...

)#endif

在需要除錯的時候只要在gcc是加入引數 -ddebug 就可以了。在呼叫的時候也很簡單,按如下方式使用:

/****** code ******/

int i = 10;

dbg(

"this is a debug infomation, i = %d\n"

, i)

;/****** output ******/

this is a debug infomation, i = 10

二、在有的編譯器中不支援變引數的巨集定義,因此我們需要有乙個更一般的定義方式。

#

ifdef debug

#define dbg(x)

printf x

#else

#define dbg(x)

#endif

在呼叫的時候要多加個括號,如下:

/****** code ******/

int i = 10;

dbg(

("this is a debug infomation, i = %d\n"

, i));

/****** output ******/

this is a debug infomation, i = 10;

巧用iOS巨集定義

attribute used,section.把某個變數的放入特殊的section中 用法 char kchinapyg attribute used,section data,chinapyg chinapyg.com char kdllhook attribute used,section da...

小技巧 6 巧用巨集定義

大段的巨集定義可能會降低 的可讀性,但是適當使用巨集定義可以節省 量,讓 更加簡潔。比如對於定義有多種屬性的能力模組而言,這樣使用巨集定義會讓 更加清晰和簡潔 宣告一種屬性以及獲取該屬性值 define attr decl attr protected unsigned int attr 0 pub...

ios 巨集定義除錯

nslog遮蔽輸出 使用nslog的乙個風險是 它的執行會占用時間和裝置資源。當我們用simulator時,nslog的資源占用並不引人注意,風險也不會顯示出來。但是如果你寫的是乙個即時戰略遊戲,而你在每乙個action中都加入了nslog 那麼nslog將成為乙個魔鬼。災難的具體表現常常是 你在s...