这是练习用的。我尝试构建类似于 NSLog 的东西。目前我有这个:
#define LogThis(info) \
[[MyLogger sharedLogger] logThis:info];\
- (void)logThis:(NSString*)info {
fprintf(stderr, [[NSString stringWithFormat:@" %@\n", info] cString]);
}
目前我能做的就是向它传递一个简单的@"string"
,但没有像 NSLog 那样的格式和参数。这里的主要优点是我摆脱了 NSLog 产生的所有这些开销。出于学习目的,我想知道如何获取多个参数来制作类似于 NSLog 的内容,以便我可以调用:
LogThis(@"method foo received input value %d", inputValue)
这可能吗?
最佳答案
以下是在 gcc 的 cpp 中定义可变参数宏的方法:
#define LogThis(format, ...) \
do { printf(format, ## __VA_ARGS__); } while(0)
关于iphone - 如何制作一个采用格式化字符串+几个附加参数的宏,就像 NSLog 一样?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1797164/