我正在使用 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;
最佳答案
代替 id
,尝试将参数作为 void *
并在单独的步骤中将其转换为 id
。我不确定为什么 clang 对此大发雷霆,但这至少应该让它开心。
关于objective-c - 变量参数列表中的非 POD 类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6675565/