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。
任何想法將不勝感激!
它看起來像編譯器不知道U32是什麼。你有沒有包含所有必要的標題? – PeterK 2010-06-23 07:14:11
你可能想做出這樣的答案,@Peter,這幾乎肯定是正確的。 – paxdiablo 2010-06-23 07:16:36
完成。起初,我不確定,因爲OP的mentoined va_args(),但看到沒有問題... – PeterK 2010-06-23 07:20:35