在目标c中使用va_start错误:在具有固定args的函数中使用'va_start'

时间:2012-11-26 06:21:14

标签: objective-c variadic-functions

我定义了一个可变方法

-(void)generateUserGrantDialog:(const char*)msg 
                         Title:(const char*)title 
                           Tag:(int)tag 
                       MsgData:(const char*)mData 
                        MsgLen:(int)mLen 
             CancelButtonTitle:(NSString*)cancelBtnTitle 
             OtherButtonTitles:(NSString *)firstTitle, ... 
                                           NS_REQUIRES_NIL_TERMINATION;

现在我必须遍历va_list,所以我编写了代码:

va_list args;
va_start(args, firstTitle);
for (NSString *arg = firstTitle; arg != nil; arg = va_arg(args, NSString*))
{   
     // code
}
va_end(args);

当我构建代码时,我收到错误

编译错误:'va_start'用于具有固定args的函数

任何人都可以帮助我摆脱它..

由于

1 个答案:

答案 0 :(得分:3)

将您的代码更改为:

va_list args;
va_start(args, firstTitle);
for (; firstTitle != nil; firstTitle = va_arg(args, NSString*)) {   
    // code (using each firstTitle)
}
va_end(args);