2010-06-23 25 views
0

我想WIRTE以這種方式可變參數的函數:問題的va_arg()

fault_manager.cc:3344: error: expected primary-expression before ',' token 
fault_manager.cc:3387: error: expected primary-expression before 'U32' 
fault_manager.cc:3387: error: expected `)' before 'U32' 
fault_manager.cc:3387: error: expected `)' before ';' token 
fault_manager.cc:3387: error: expected `)' before ';' token 

我沒有:

static void configElement(U32 localFaultId, 
          char* name, 
          U32 report, 
          U32 localId, 
          U32 detectTime, 
          U32 ceaseTime,...) 
{ 
    U32 i = 0; 
    U32 tmpNo = 0; 
    va_list ap; 

    if (nofFaults >= MAX_NOF_LOCAL_FAULTS) 
    { 
    //something here 
    return; 
    } 
    else 
    { 

    faultList[nofFaults].ceaseTime = ceaseTime; 

    va_start(ap, ceaseTime); 
    tmpNo = va_arg(ap, U32); 
    while ((tmpNo!= END_MARK) && (i < MAX_NOF_DEPEND)) 
    { 
     faultList[nofFaults].dependList[i++].faultNo = tmpNo; 
    } 


    faultList[nofFaults].dependList[i].faultNo = END_MARK; 
    /* Finish by increment nofFaults parameter */ 
    va_end(ap); 
    nofFaults++; 
    } 
} 

但是,我編譯這個代碼時得到了錯誤味精想法這裏出了什麼問題。我的平臺是Windows,我正在使用cygwin + Eclipse(CDT)。 gcc的版本是4.1.1。

任何想法將不勝感激!

+3

它看起來像編譯器不知道U32是什麼。你有沒有包含所有必要的標題? – PeterK 2010-06-23 07:14:11

+0

你可能想做出這樣的答案,@Peter,這幾乎肯定是正確的。 – paxdiablo 2010-06-23 07:16:36

+0

完成。起初,我不確定,因爲OP的mentoined va_args(),但看到沒有問題... – PeterK 2010-06-23 07:20:35

回答

4

它看起來像編譯器不知道U32是什麼。你有沒有包含所有必要的標題?