关于可变参数函数的标准宏定义va_arg,请教
#define __va_rounded_size(TYPE) \
(((sizeof (TYPE) + sizeof (int) - 1) / sizeof (int)) * sizeof (int))
#define va_arg(AP, TYPE) \
(AP += __va_rounded_size (TYPE), \
*((TYPE *) (AP - __va_rounded_size (TYPE))))
以上二个宏定义取自标准库文件,执行语句
int i;
i = va_arg(args, int);
预处理后的结果是:
i = (args += (((sizeof (int) + sizeof (int) - 1) / sizeof (int)) * sizeof (int)), *((int *) (args - (((sizeof (int) + sizeof (int) - 1) / sizeof (int)) * sizeof (int))))) ;
请教这个语句是如何执行的,实现了地址的增加和取地址指向的值,但是当中为何用逗号隔开的?