前言:
1)輸出日志是會大量損耗系統性能
2)輸出的信息很容易會被截取到,導致信息不安全。
所以我們會在發行版(Release)取消所有的Log。如果一行一行地去注釋掉Log,顯然不是一個明確的選擇。
因此我們可以使用宏去自定義Log輸出。
最簡單的一個例子
#ifdef DEBUG #define GCLog(fmt, ...) NSLog((fmt), ##__VA_ARGS__); #else #define GCLog(...);
輸出當前方法名
#define GCMethod(...) NSLog(@"%s", __func__);
使用方法
GCLog(@"sdf");
使用宏自定義輸出,還可以很方便地管理輸出的內容
#ifdef DEBUG # define DLog(fmt, ...) NSLog((@"[文件名:%s]\n" "[函數名:%s]\n" "[行號:%d] \n" fmt), __FILE__, __FUNCTION__, __LINE__, ##__VA_ARGS__); #else # define DLog(...); #endif
摘自:http://blog.csdn.net/remote_roamer/article/details/7107320
參數解釋
1) __VA_ARGS__ 是一個可變參數的宏,很少人知道這個宏,這個可變參數的宏是新的C99規范中新增的,目前似乎只有gcc支持(VC6.0的編譯器不支持)。宏前面加上##的作用在於,當可變參數的個數為0時,這里的##起到把前面多余的","去掉的作用,否則會編譯出錯, 你可以試試。 2) __FILE__ 宏在預編譯時會替換成當前的源文件名 3) __LINE__宏在預編譯時會替換成當前的行號 4) __FUNCTION__宏在預編譯時會替換成當前的函數名稱 有了以上這幾個宏,特別是有了__VA_ARGS__ ,調試信息的輸出就變得靈活多了。
摘自:http://blog.chinaunix.net/uid-22878837-id-2110544.html
博文作者:GarveyCalvin
博文出處:http://www.cnblogs.com/GarveyCalvin/
本文版權歸作者和博客園共有,歡迎轉載,但須保留此段聲明,並給出原文鏈接,謝謝合作!
