繁体   English   中英

va_arg()有问题

[英]problem with va_arg()

我想以这种方式编写一个带有可变参数的函数:

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

但是,编译此代码时出现错误msg:

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

我不知道这里出了什么问题。 我的平台是Windows,并且正在使用cygwin + Eclipse(CDT)。 gcc的版本是4.1.1。

任何想法将不胜感激!

看起来编译器不知道U32是什么。 是否包括所有必需的标题?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM