objective-c - spanish - salvage title meaning
Clean NSLog-Sin marca de tiempo y nombre del programa (1)
Use este código (note la parte ##
):
#define NSLog(FORMAT, ...) fprintf(stderr, "%s/n", [[NSString stringWithFormat:FORMAT, ##__VA_ARGS__] UTF8String]);
Casi termino un NSLog limpio con este código:
#define NSLog(FORMAT, ...) printf("%s/n", [[NSString stringWithFormat:FORMAT, __VA_ARGS__] UTF8String]);
Esto funciona bien si hago esto:
NSLog(@"Show %@ message", @"this");
Pero, fallará si lo uso
NSLog(@"One argument");
porque __VA_ARGS__
no es nada, entonces produce
printf("%s/n", [[NSString stringWithFormat:@"One argument",] UTF8String]);
Entonces, el problema es la coma. Debido a que esto es macro, __VA_ARGS__
no es nada. Entonces no puedo hacer cosas como __VA_ARGS__==nil
porque producirá ==nil
y fallará.
La pregunta es simple: ¿Qué hacer cuando __VA_ARGS__
no es nada? O solo usa coma cuando tengas más argumentos.