2014年11月14日金曜日

[C言語] めっちゃログを出力する人へのTips


お久しぶりです、筆者です。

デバッグしてるときにコンソール上にログを出力したいとき、ありますよね。
そんなとき、ソースコード中にこんな関数を入れている人もいるかもしれません。
fprintf(stderr, "i = %d, j = %d", i, j);
もちろんprintf使ってもいいんですが、これだとターミナル上でパイプライン処理したときなんかに影響を与えてしまいます。
でも毎回stderrと入力するのもめんどくさいですね、小さなことですが。
なので、マクロを使ってもっと短い関数名で定義しておけば良いと思います。
こんな感じ。
#define eprintf(...) fprintf(stderr, __VA_ARGS__)
このマクロの中で、...というのは可変長の引数を表しています。
fprintfは引数の数が可変ですからね。
この部分は実際の関数の中の__VA_ARGS__の部分にそのまま入ります。
なのでこのマクロを使えば、
eprintf ("i = %d, j = %d", i, j);
と書くと一番最初に書いたコマンドに展開されることになります。
便利ですね。

各所に散りばめられたログ出力コードのオン・オフを切り替える 

デバッグしている最中は色んな情報がほしいので、色々なところでログを出力してしまいます。
最終的にバグが取れたときに、もう必要のないeprintfによるログ出力は消しましょう。
eprintf関数を以下のように定義し直します。
#define eprintf(...) do {} while(0)
これでeprintfは何もしないコードに置き換えられます。
良いでしょ。
使え。

0 件のコメント :

コメントを投稿