我正在尝试创建一个类似于此的函数:
#define printf_copy(s, ...) printf(s, ##__VA_ARGS__) // acceptable!
但这是一个预处理器,我需要一个运行时,如下所示:
+ (NSString *)format:(NSString *)first, ...
{
return [NSString stringWithFormat:first, __VA_ARGS__]; // unacceptable!
}
BUT !!这是编译器无法接受的!
我正在试图找出(...)的局部变量是什么? (是的那3个点)
答案 0 :(得分:9)
与C variadic函数完全相同。这意味着您无法直接传递它,您必须传递va_list
。你需要这样的东西:
+ (NSString *)format:(NSString *)first, ...
{
NSString *string;
va_list args;
va_start(args, first);
string = [[NSString alloc] initWithFormat:first arguments:args];
va_end(args);
return [string autorelease];
}