I had thinked about the implements of variable argument for a long
time.
But I only know a little about it on the following macro.
Could you please explain it for me?
more detail.Thanks very much.
typedef char *va_list;
275 #endif /* _VALIST */
276
277 /*
278 * Storage alignment properties
279 */
280
281 #define _AUPBND (sizeof (acpi_native_int) - 1)
282 #define _ADNBND (sizeof (acpi_native_int) - 1)
283
284 /*
285 * Variable argument list macro definitions
286 */
287
288 #define _bnd(X, bnd) (((sizeof (X)) + (bnd)) & (~(bnd)))
289 #define va_arg(ap, T) (*(T *)(((ap) += (_bnd (T,
_AUPBND))) - (_bnd (T,_ADNBND))))
290 #define va_end(ap) (void) 0
291 #define va_start(ap, A) (void) ((ap) = (((char *) &(A)) +
(_bnd (A,_AUPBND))))
292