私のプログラムは、ログと stdout に書き込みます。ただし、すべてのメッセージには特定の優先度があり、ユーザーはプリファレンスでどの優先度がどのストリーム (ログまたは標準出力) に送られるかを指定します。
unsigned short PRIO_HIGH = 0x0001;
unsigned short PRIO_NORMAL = 0x0002;
unsigned short PRIO_LOW = 0x0004;
設定は、いくつかのフラグによって処理されます。
unsigned short PRIO_LOG = (PRIO_HIGH | PRIO_NORMAL);
unsigned short PRIO_STD = (PRIO_HIGH);
このwrite_log
関数は、printf 関数と同じパラメーターで動作する必要がありますが、パラメーターが追加されていますunsigned short priority
。
write_log((PRIO_NORMAL|PRIO_LOW), "HELLO %s, take %d", "World", 1);
(PRIO_NORMAL|PRIO_LOW
意味不明ですが…)
フラグのチェックは簡単です: if(priority & PRIO_LOG)
(両方の引数にフラグが設定されている場合は >1 を返します)
ただし、文字列リテラルとフォーマット引数を printf 関数に渡す方法がわかりません。誰か助けてくれたり、ポインタをくれたりできますか (同じ効果を達成する別の方法が可能です)? それは大歓迎です。