Привет, я хотел бы передать структуру вариативным функциям и использовать значения внутри указанной структуры в 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);
}
Как мне получить доступ к содержимому аргументов структуры, которые я передал
va_arg
(на самом деле это макрос) принимает тип в качестве аргумента и получает следующий целый аргумент. Вы не можете использоватьva_arg
для получения части аргумента (например, частей структуры). - person Some programmer dude   schedule 03.04.2021number temp = va_arg(ap,number)
и оттуда ее прогулка по парку, заменив две проблемные строки наif(temp.dontIncludeFlag == 0)
иsum+= temp.num;
. Если вы хотите опубликовать ответ, добрый сэр, я приму его, чтобы вы могли получить баллы. - person Jake quin   schedule 03.04.2021