回覆列表
  • 1 # 使用者6166977615732

    需要借用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;}

  • 中秋節和大豐收的關聯?
  • 如果一個人意外死亡,那麼他存在銀行的錢會被怎麼處理?