问题描述
您好,我想将结构传递给可变参数函数,并在 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);
}