Моя программа пишет в журнал и в стандартный вывод. У каждого сообщения, однако, есть определенный приоритет, и пользователь указывает в Предпочтениях, какие приоритеты идут к какому потоку (log или 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. Может кто-нибудь помочь или дать мне указатель (возможно, альтернативный метод, который достигает того же эффекта)? Это будет высоко ценится.