巧用巨集定義進行除錯
在進行程式設計時,有時我們往往不希望借住於除錯工具(如: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...