Cで可変長引数のみを取る関数を作る
Cで可変長引数のみを取る関数を作りたいのですが、どのようにすればいいのでしょうか?
下の例のように、最初に可変長引数の数を示すcounterのような引数を取り、その数を元にforで値を得るものはよく見かけますが、これを average(10, 20, 30) というふうに可変長引数のみを取り、結果を返すにはどうすればいいのでしょうか?
Macを使っているため、コンパイラはclangです。
#include <stdarg.h>
double average(int count, ...) {
va_list ap;
int j;
double sum = 0;
va_start(ap, count);
for (j = 0; j < count; j++) {
sum += va_arg(ap, double);
}
va_end(ap);
return sum / count;
}
#average(10, 20, 30) -> 20と返ってくるようにしたい
コードの引用元: Wikipedia:可変長引数