Rod*_*igo 26 c objective-c nslog ios
我几乎用这段代码完成了一个干净的NSLog:
#define NSLog(FORMAT, ...) printf("%s\n", [[NSString stringWithFormat:FORMAT, __VA_ARGS__] UTF8String]);
Run Code Online (Sandbox Code Playgroud)
如果我这样做,这工作正常:
NSLog(@"Show %@ message", @"this");
Run Code Online (Sandbox Code Playgroud)
但是,如果我使用它将会失败
NSLog(@"One argument");
Run Code Online (Sandbox Code Playgroud)
因为__VA_ARGS__什么都没有,所以它产生了
printf("%s\n", [[NSString stringWithFormat:@"One argument",] UTF8String]);
Run Code Online (Sandbox Code Playgroud)
所以,问题是逗号.因为这是宏,__VA_ARGS__没什么.所以我不能做__VA_ARGS__==nil因为会产生==nil而且会失败的事情.
问题很简单:什么时候__VA_ARGS__什么都不做?或者只有在有更多参数时才使用逗号.
xuz*_*zhe 60
使用此代码(注意##部分):
#define NSLog(FORMAT, ...) fprintf(stderr, "%s\n", [[NSString stringWithFormat:FORMAT, ##__VA_ARGS__] UTF8String]);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8953 次 |
| 最近记录: |