ここでは、printf 関数のような可変長パラメータを持つ関数のサンプルコードを掲載しています。第1パラメータにフォーマットの文字列を持ち、2つ目以降のパラメータは任意の個数(複数)という関数です。
スポンサーリンク
可変長引数の関数サンプル
1つ目にフォーマットの文字列を持ち、2つ目以降可変長引数です。va_*** ではじまる関数や型を使用して可変長引数を処理します。機械的に覚えておいても良いでしょう。( va_list, va_start. va_end )
#include <stdio.h> #include <stdarg.h> void debug_print(char* message,...) { va_list ap; va_start(ap, message); // 標準エラー出力にデバッグメッセージを出力する fprintf(stderr, "[DEBUG] "); vfprintf(stderr, message, ap); fprintf(stderr, "\n"); va_end(ap); } // 使用方法 debug_print("[%d] [%s]", 100, "愛のメモリー"); // 出力結果結果 // [DEBUG] [100] [愛のメモリー]
printf 関数は標準出力にメッセージを出力しますので、その代わりに標準エラー出力に出力するデバッグ関数をサンプルとして作成しました。なお、stderr ( 標準エラー出力 ) は stdio.h に定義されています。
stdin.h に宣言されている定義
定義 | 内容 |
---|---|
stdin | 標準入力 |
stdout | 標準出力 |
stderr | 標準エラー出力 |
美しい人生よ~ 限りない喜びよ~