ここでは、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 | 標準エラー出力 |
美しい人生よ~ 限りない喜びよ~