2017-04-18 36 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