为什么stdarg.h有一个宏«__va_size»?

md5*_*md5 5 c c++ variadic-functions

我正在寻找一些关于宏的代码,我找到了这样的代码,对于宏«va_start»:

#define __va_argsiz(t)  \
    (((sizeof(t) + sizeof(int) - 1) / sizeof(int)) * sizeof(int))
#define va_start(ap, pN)    \
    ((ap) = ((va_list) (&pN) + __va_argsiz(pN)))
Run Code Online (Sandbox Code Playgroud)

我想知道«__va_argsiz»功能的目标究竟是什么.是对齐限制吗?

谢谢 !

gee*_*aur 4

C 中的对齐和默认类型提升规则。