簡單介紹以下幾個巨集:
1) __va_args__ 是乙個可變引數的巨集,這個可變引數的巨集是新的c99規範中新增的,目前似乎只有gcc支援(vc6.0的編譯器不支援)。巨集前面加上##的作用在於,當可變引數的個數為0時,這裡的##起到把前面多餘的","去掉,否則會編譯出錯。
2) __file__ 巨集在預編譯時會替換成當前的源檔名
3) __line__巨集在預編譯時會替換成當前的行號
4) __function__巨集在預編譯時會替換成當前的函式名稱
1.重新定義系統的nslog,__optimize__ 是release 缺省會加的巨集
#ifndef __optimize__
#define nslog(...) nslog(__va_args__)
#else
#define nslog(...){}
#endif
2.直接自己寫#define,當release版本的時候把#define 注釋掉即可
#define ios_debug
#ifdef ios_debug
#define nslog(...) nslog(__va_args__)
#endif 3.
#ifdef debug
# define dlog(format, ...) nslog((@"[檔名:%s]" "[函式名:%s]" "[行號:%d]" format), __file__, __function__, __line__, ##__va_args__);
#else
# define dlog(...);
#endif
這種方式需要修改專案的配置,使得在debug編譯的時候,編譯dlog的巨集,產生詳細的日誌資訊,而release的時候,不產生任何控制台輸出。
相比而言,還是第一種比較方便。
iOS中日誌列印Q A
q 如何列印當前的函式和行號?a 我們可以在列印時使用一些預編譯巨集作為列印引數,來列印當前的函式和行號。如 1 nslog s d obj func line obj 其中 func 和 line 都是預編譯的巨集,編譯時會分別替換為當前函式和當前行號。下面是一些常用於列印日誌的巨集。巨集說明 f...
iOS中日誌列印Q A
q 如何列印當前的函式和行號?a 我們可以在列印時使用一些預編譯巨集作為列印引數,來列印當前的函式和行號。如 1 nslog s d obj func line obj 其中 func 和 line 都是預編譯的巨集,編譯時會分別替換為當前函式和當前行號。下面是一些常用於列印日誌的巨集。巨集說明 f...
iOS開發 常見日誌列印
一 列印當前的函式和行號 我們可以在列印時使用一些預編譯巨集作為列印引數,來列印當前的函式和行號。如 nslog s d obj func line obj 其中 func 和line 都是預編譯的巨集,編譯時會分別替換為當前函式和當前行號。下面是一些常用於列印日誌的巨集。巨集說明 func 列印當...