お久しぶりです、筆者です。
デバッグしてるときにコンソール上にログを出力したいとき、ありますよね。
そんなとき、ソースコード中にこんな関数を入れている人もいるかもしれません。
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 件のコメント :
コメントを投稿