如何将结构传递和访问 C 中的可变参数函数

问题描述

您好,我想将结构传递给可变参数函数,并在 C 中使用所述结构内的值。我不知道如何访问传递的每个结构的内容

这是一个示例情况

typedef struct  {
 int num;
 bool dontIncludeFlag;
} number;


int average(unsigned count,...){
    va_list ap;
    int j;
    int sum = 0;

    va_start(ap,count); 
    for (j = 0; j < count; j++) {
        if(va_arg(ap,number.dontIncludeFlag))        //This line does not work
        sum += va_arg(ap.num,number);               //so does this line
    }
    va_end(ap);

    return sum / count;
}


int main(){

   number a,b,c;

   a.num= 5;
   a.dontIncludeFlag = 0;

   b.num= 2;
   b.dontIncludeFlag= 1;

   c.num= 1;
   c.dontIncludeFlag= 0;

   average(3,a,c);
}

如何访问我传递的结构体参数的内容

解决方法

您错误地使用了 va_arg。使用它为变量分配一个可变参数,然后然后访问该成员。

    number n;
    for (j = 0; j < count; j++) {
        n = va_arg(ap,number);
        if(n.dontIncludeFlag)
            sum += va_arg(ap.num,number);
    }