tags:

views:

42

answers:

1

I want to wirte a function with variable arguments in this way:

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++;
  }
}

However, I got the error msg when compiling this code:

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

I have no idea what is going wrong here. My platform is Windows, and I'm using cygwin+Eclipse(CDT). The version of gcc is 4.1.1.

Any idea will be appreciated much!

+3  A: 

It looks like the compiler does not know what U32 is. Did you include all necessary headers?

PeterK