变量参数列表中的非POD类型

时间:2011-07-13 07:36:43

标签: objective-c c ios ipad

我正在使用soap库并将项目切换到Apple LLVM 3.0编译器给了我几百个错误,无论如何几乎修复了所有错误。代理一个。

在线上'while(eachObject .....' 给我一个编译器错误'错误:'va_arg'的第二个参数是非POD类型'id'[-Wnon-pod-varargs,3]'

我不知道传递的对象的类型。它在以前的编译器版本中有效,但这个版本有点挑剔。

- (id)initWithObjects:(id)firstObj, ...{
if(self = [self init]) {

    id eachObject;

    va_list argumentList;
    if (firstObj) {
        [self.items addObject: firstObj];
        va_start(argumentList, firstObj);

        while (eachObject == va_arg(argumentList, id)) {
            [self.items addObject: eachObject];
        }
        va_end(argumentList);
    }
}
return self;

}

1 个答案:

答案 0 :(得分:1)

而不是id,请尝试将参数作为void *,并在单独的步骤中将其转换为id。我不确定为什么clang会对此有所帮助,但至少应该让它快乐。