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