- 締切済み
ログ出力関数
C言語で、「可変長引数」を受け取る ログ出力関数を作っています。 /* ------------------------------------------------------ */ #include <stdio.h> #include <stdarg.h> void my_logger(char *format, ...) { va_list argptr; va_start(argptr, format); vprintf(format, argptr); va_end(argptr); } int main(void) { int n = 0; my_logger("logger : hello (%d)\n", n++); my_logger("logger : thank you (%d)\n", n++); my_logger("logger : bye (%d)\n", n++); return 0; } <実行結果> logger : hello (0) logger : thank you (1) logger : bye (2) /* ------------------------------------------------------ */ 出力する文字列に、"logger : "を毎回記述するのは面倒なので my_logger関数の中で"logger : "を追加したいのですが どうすればいいでしょうか。 ↓みたいなのもありかもしれませんけど、何だかねぇ、、、って感じですし -- 省略 -- va_start(argptr, format); printf("logger : "); vprintf(format, argptr); va_end(argptr); -- 省略 -- ↓のようなマクロを使う手もありますけど、、、わけあって使えません。 #define my_logger(fmt, ...) printf("logger : " fmt, __VA_ARGS__) どなたか、ご教授お願いします。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- php504
- ベストアンサー率42% (926/2160)
自分なら「何だかねえ、、、」のやり方にします。 これが一番簡単で普通ではないでしょうか。 私には全く「何だかねえ」には思えませんよ。