__VA_ARGS__ 是一個可變參數(shù)的宏,這個可變參數(shù)的宏是新的C99規(guī)范中新增的。
GCC、VC2005開始支持。
#define CALCSUM(v, ...)? ?sum(v, __VA_ARGS__)
int sum(int num_args, ...)
{
int val = 0;
va_list ap;
int i;
va_start(ap, num_args);
for (i = 0; i < num_args; i++)
{
val += va_arg(ap, int);
}
va_end(ap);
return val;
}
int main(void)
{
printf("10、20 和 30 的和 = %d\n", CALCSUM(3, 10, 20, 30));
printf("4、20、25 和 30 的和 = %d\n", CALCSUM(4, 4, 20, 25, 30));
return 0;
}