2017-04-18 34 views
0

這是我的自定義NSLog。使用##時的Xcode編譯器錯誤__ VA_ARGS__

#define NSLog(fmt, ...) printf("%s,%d\n %s\n\n", __PRETTY_FUNCTION__, __LINE__, [NSString stringWithFormat:fmt, ##__VA_ARGS__].UTF8String) 

該日誌在另一個項目上工作良好,但在當前項目中編譯時發生了4錯誤。如果使用__VA_ARGS__,如#define NSLog(...) NSLog(__VA_ARGS__),它將編譯成功。我認爲這可能是由Building Setting造成的。

error 1

error 2

error 3

error 4

這是任何人有任何想法,以幫助我解決這個問題。

回答

2

檢查頭文件是否聲明瞭這個輸入Foundation。檢查你是否還沒有在其他地方定義NSLog,最後,重新定義NSLog並不是一個好主意。你可能會更好過採用日誌框架或定義自己是這樣的:

#define MELog(fmt, ...) NSLog("%s,%d\n %s\ .... 
+1

覆寫'NSLog'都必須始終包含後框架(系統)的頭,否則會污染的彙編頭構架。有些框架是用C語言編寫的,'[NSString stringWithFormat]'不會在那裏工作。這解釋了錯誤信息。 – Sulthan

+0

謝謝,學到很多東西! – ovo