2011-07-13 64 views
2

我正在使用soap庫並將項目切換到Apple LLVM 3.0編譯器給了我幾百個錯誤,無論如何幾乎修復了它們。執行一個。可變參數列表中的非POD類型

'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

代替id,嘗試請求參數爲void *和c在一個單獨的步驟中以id。我不確定爲什麼鏗鏘聲會對此做出合理的解釋,但至少應該讓它開心。

+0

感謝,工作像一個魅力:) – jesuisbonbon

+0

如果一切都解決了,請務必將此問題標記爲「已回答」! – duskwuff

+0

以下是一個很好的參考:http://builderror.com/article/47/second-argument-to-va-arg-is-of-non-pod-type – an0

相關問題