1. va_listの基本原則と使用方法:
する#include <stdio.hに> する#include <STDARG.H> ボイド FUNC(int型 I、チャー * CH、...){ // フォーマット va_listのAP; va_startマクロ(AP、CH); // 特定のパラメータを指し、から開始 チャー * STR、 STR = CH; DO { のprintf(" %のS " 、STR); STR =のva_arg(APは、CHARは *); // 、柔軟性のない型char *型のパラメータを指定する必要が } ながら(STR)を、 } int型のmain() { FUNC(1、" A "、" B " 、NULL); リターン 0 ; }
2. va_listのとvsprintfのと一緒に使用:
書式#include <stdio.hに> する#include <STDARG.H> 無効 FUNC(int型 I、char型の {*のFMT、...) // 形式の va_listのAPを、 va_startマクロ(AP、FMT)。 チャー STR [ 20 ]。 vsprintfの(STR、FMT、AP)。 va_end(AP)。 printf(" %sにする\ n " 、STR)。 } int型のmain() { チャー STR1は、[] = " 0009 " ; チャー STR2 [] = " STR2 " 。 int型 D = 1000年。 FUNC( 1、" %S%S%D " 、STR1、STR2、D)。 リターン 0 ; }
これはまさにのprintfの原理です。
拡張:initializer_list近代C ++。