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

Jak*_*uin 2 c variadic variadic-functions

您好,我想将一个结构传递给可变参数函数,并在 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,b,c);
}
Run Code Online (Sandbox Code Playgroud)

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

Sam*_*ter 5

代码使用va_arg不正确。使用它将可变参数分配给变量,然后访问该成员。

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