在C中使用va_start错误:具有固定参数的函数中使用了“ va_start”

using va_start in objective c error: 'va_start' used in function with fixed args

我定义了一种可变参数方法

1
2
3
4
5
6
7
8
-(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,因此我编写了代码:

1
2
3
4
5
6
7
va_list args;
va_start(args, firstTitle);
for (NSString *arg = firstTitle; arg != nil; arg = va_arg(args, NSString*))
{  
     // code
}
va_end(args);

构建代码时出现错误

编译错误:函数" va_start"中使用固定参数

谁能帮助我摆脱困境。

谢谢


将您的代码更改为此:

1
2
3
4
5
6
va_list args;
va_start(args, firstTitle);
for (; firstTitle != nil; firstTitle = va_arg(args, NSString*)) {  
    // code (using each firstTitle)
}
va_end(args);