【发布时间】:2012-08-01 06:09:19
【问题描述】:
我试图让我的宏像NSLog() 一样工作,它接受可变参数。下面的代码会导致解析问题。
定义这个的正确方法是什么?
#define TF_CHECKPOINT(f, ...) \
do { \
NSString *s = [[NSString alloc] initWithFormat:f arguments:__VA_ARGS__] autorelease]; \
[TestFlight passCheckpoint:[NSString stringWithFormat:@"%@: %@", [self class], s]]; \
} while (0)
【问题讨论】:
-
我不确定你的意思是什么变量参数,因为
__VA_ARGS__已经代表宏的变量参数,所以你可以像使用下面的宏一样使用NSLog(...)通常是:#define AnotherLog(...) NSLog(__VA_ARGS__),在它之后,它将是源代码中的有效行:`AnotherLog(@"%d, %@", 1, @"text");你的最终目标到底是什么?
标签: objective-c macros variadic-functions