首先先介紹一下可變參數表需要用到的宏:
頭檔案:#include<cstdarg>
void va_start( va_list arg_ptr, prev_param );
type va_arg( va_list arg_ptr, type );
void va_end( va_list arg_ptr );
va_list:用來儲存宏va_start、va_arg和va_end所需資訊的一種類型。為了通路變長參數清單中的參數,必須聲明
va_list類型的一個對象 定義: typedef char * va_list;
va_start:通路變長參數清單中的參數之前使用的宏,它初始化用va_list聲明的對象,初始化結果供宏va_arg和
va_end使用;
va_arg: 展開成一個表達式的宏,該表達式具有變長參數清單中下一個參數的值和類型。每次調用va_arg都會修改
用va_list聲明的對象,進而使該對象指向參數清單中的下一個參數;
va_end:該宏使程式能夠從變長參數清單用宏va_start引用的函數中正常傳回。
va在這裡是variable-argument(可變參數)的意思.
這些宏定義在stdarg.h中,是以用到可變參數的程式應該包含這個頭檔案.下面我們寫一個簡單的可變參數的函數,改函數至少有一個整數參數,第二個參數也是整數,是可選的.函數隻是列印這兩個參數的值.