私のプログラムはログとstdoutに書き込みます。ただし、すべてのメッセージに一定の優先順位があり、優先順位にはどの優先順位がどのストリーム(ログまたは標準出力)になるかをユーザーが指定します。ユーザの好みに応じてフィルタリングするラッパーprintf関数
unsigned short PRIO_HIGH = 0x0001;
unsigned short PRIO_NORMAL = 0x0002;
unsigned short PRIO_LOW = 0x0003;
優先いくつかのフラグで処理される:
unsigned short PRIO_LOG = (PRIO_HIGH | PRIO_NORMAL);
unsigned short PRIO_STD = (PRIO_HIGH);
write_log
関数はunsigned short priority
の追加パラメータを使用して、printf関数と同じパラメータで動作しなければなりません。私はしかし、見つけることができませんif(priority & PRIO_LOG)
(戻り値> 1任意のフラグは両方の引数に設定されている場合)
:
write_log((PRIO_NORMAL|PRIO_LOW), "HELLO %s, take %d", "World", 1);
(PRIO_NORMAL|PRIO_LOW
はほとんど意味がない場合でも、...)のフラグをチェック
が簡単です文字列リテラルとをprintf関数の書式引数に渡す方法について説明します。誰でも助けてもらえますか(同じ効果を達成する別の方法に可能です)?大変感謝しています。代わりのprintfのあなたはまた、vprintfを(呼び出したい
Visual C++では、代わりに_____VA_ARGS_____を使用できます。リファレンス:http://msdn.microsoft.com/en-us/library/ms177415(v=vs.110).aspx –
必要な '#include ' –
robisrob