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