I almost finishing a clean NSLog with this code:
#define NSLog(FORMAT, ...) printf("%s
", [[NSString stringWithFormat:FORMAT, __VA_ARGS__] UTF8String]);
This work fine if I do this:
NSLog(@"Show %@ message", @"this");
But, will fail if I user it
NSLog(@"One argument");
because __VA_ARGS__
is nothing, so it produce
printf("%s
", [[NSString stringWithFormat:@"One argument",] UTF8String]);
So, the problem is the comma. Because this is macro, __VA_ARGS__
is nothing. So I can't do things like __VA_ARGS__==nil
because will produce ==nil
and will fail.
The question is simple: What to do when __VA_ARGS__
is nothing? Or only use comma when have more arguments.
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…