【发布时间】:2011-09-22 15:21:16
【问题描述】:
我几乎用这段代码完成了一个干净的 NSLog:
#define NSLog(FORMAT, ...) printf("%s\n", [[NSString stringWithFormat:FORMAT, __VA_ARGS__] UTF8String]);
如果我这样做,这会很好:
NSLog(@"Show %@ message", @"this");
但是,如果我使用它会失败
NSLog(@"One argument");
因为__VA_ARGS__什么都不是,所以它产生
printf("%s\n", [[NSString stringWithFormat:@"One argument",] UTF8String]);
所以,问题在于逗号。因为这是宏,__VA_ARGS__ 什么都不是。所以我不能做像__VA_ARGS__==nil 这样的事情,因为会产生==nil 并且会失败。
问题很简单:当__VA_ARGS__ 什么都不是时该怎么办?或者只有在有更多参数时才使用逗号。
【问题讨论】:
标签: objective-c c ios nslog