ifdef DEBUG
define DLog(fmt, ...) NSLog((@"[文件名:%s]\n"
"[函數名:%s]\n" "[行號:%d] \n" fmt),
FILE, FUNCTION, LINE, ##VA_ARGS);
define DeBugLog(fmt, ...) NSLog((@"%s [Line %d] " fmt), PRETTY_FUNCTION,
LINE, ##VA_ARGS);
define NSLog(...) NSLog(VA_ARGS);
%s\n",[[[NSString stringWithUTF8String:FILE] lastPathComponent] UTF8String],
LINE, [[NSString stringWithFormat:FORMAT, ##VA_ARGS] UTF8String]);
else
define DLog(...)
define DeBugLog(...)
define NSLog(...)
define MyNSLog(FORMAT, ...) nil
endif
- VA_ARGS 是一個可變參數的宏筷屡,很少人知道這個宏,這個可變參數的宏是新的C99規(guī)范中新增的氏堤,目前似乎只有gcc支持(VC6.0的編譯器不支持)扩借。宏前面加上##的作用在于吱雏,當可變參數的個數為0時姥闭,這里的##起到把前面多余的”,”去掉的作用,否則會編譯出錯, 你可以試試褐健。
FILE 宏在預編譯時會替換成當前的源文件名
LINE宏在預編譯時會替換成當前的行號
FUNCTION宏在預編譯時會替換成當前的函數名稱