c語言如何封裝壹個帶有可變參數的方法?
需要借用C語言的VA_LIST?宏定義,及相關操作來實現可變參數。
VA_LIST?所在頭文件:#include <stdarg.h>,用法如下:
(1)首先在函數裏定義壹具VA_LIST型的變量,這個變量是指向參數的指針;
(2)然後用VA_START宏初始化剛定義的VA_LIST變量;
(3)然後用VA_ARG返回可變的參數,VA_ARG的第二個參數是妳要返回的參數的類型(如果函數有多個可變參數的,依次調用VA_ARG獲取各個參數);
(4)最後用VA_END宏結束可變參數的獲取。
以下是壹個自定義打印接口的實現:
int?my_printf(const?char?*fmt,?...)//...表示參數可變{
va_list?args;//定義va_list
static?char?gc_PrintfOutBuff[1000];
va_start(args,?fmt);//初始化
vsnprintf((char?*)?gc_PrintfOutBuff,?1000,?(char?*)?fmt,?args);//這裏沒有使用VA_ARG取回單個變量,而是借用vsnprinf壹次性讀取。
va_end(args);//結束獲取
puts("%s",(const?char?*)gc_PrintfOutBuff);//使用。
return?0;
}