在c和c++中有一類函數含所有不確定的參數列表,例如經典的printf(char *format,...)。本文講討論如何實現變長參數的函數。
在<stdarg.h>中包含了一組宏定義,他們對如何遍歷參數表進行了定義。
主要有4個類型:
va_list:用於聲明一個變量,該變量依次引用參數列表中的參數,例va_list ap;看起後綴list,應該就是一個鏈表
va_start:用於將ap聲明的變量指向第一個無名參數。va_start(ap,最後一個有名參數)。可變長參數函數必須含有一個有名參數。
va_arg:返回ap當前指向的參數,並++ap。va_arg(ap,類型)
va_end:完成必要的清理工作。
摘自 襲人的專欄