【发布时间】:2010-12-03 17:38:15
【问题描述】:
我的程序写入日志和标准输出。然而,每条消息都有一个特定的优先级,用户在 Preferences 中指定哪些优先级转到哪个流(日志或标准输出)。
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 函数。任何人都可以帮助或给我一个指针(可能是达到相同效果的替代方法)?将不胜感激。
【问题讨论】: