誰かがCで詳細オプション(メッセージを印刷するかどうかを選択するオプション)を使ってプログラムを書く方法を知っていますか?
つまり、コード内の各printfにif(verbose)を記述しないということです。
よりエレガントな解決策はありますか?
誰かがCで詳細オプション(メッセージを印刷するかどうかを選択するオプション)を使ってプログラムを書く方法を知っていますか?
つまり、コード内の各printfにif(verbose)を記述しないということです。
よりエレガントな解決策はありますか?
vfprintfのようなものを呼び出す前に、フラグをテストする(可変個引数)マクロ/vararg関数を使用するだけです。
/* Crude example. */
void my_log(char *format, ...)
{
va_list args;
if (!ok_to_log)
return;
va_start(args, format);
vprintf(format, args);
va_end(args);
}
少し変更されたgnuの例はどうですか:
#define eprintf(format, ...) do { \
if (ok_to_print) \
fprintf(stderr, format, ##__VA_ARGS__); \
} while(0)
関数ポインタの配列を作成します
print_function_type fx[2] = {quietprint, verboseprint};
印刷時にifを使用する代わりに、配列の正しい要素を使用します
// if verbosemode is 0 call quietprint
// if verbosemode is 1 call verboseprint
fx[verbosemode]("%d", foo);
詳細フラグをチェックし、必要に応じてprintfを呼び出す独自のprintfのような関数を作成できます。