iOS 列印日誌

2021-06-18 07:36:54 字數 942 閱讀 1213

簡單介紹以下幾個巨集:

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 列印當...