Моя программа записывает в журнал и в стандартный вывод. Однако каждое сообщение имеет определенный приоритет, и пользователь указывает в настройках, какие приоритеты переходят к какому потоку (log или stdout).wrapper printf функция, которая фильтрует в соответствии с предпочтениями пользователя
unsigned short PRIO_HIGH = 0x0001;
unsigned short PRIO_NORMAL = 0x0002;
unsigned short PRIO_LOW = 0x0003;
Преференции обрабатывается некоторыми флагами:
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)
(Returns> 1, если какой-либо флаг установлен в обоих аргументов)
я не могу, однако найти как я хотел бы передать строковый литерал и аргументы формата функции printf. Может ли кто-нибудь помочь или дать мне указатель (возможно альтернативный метод, который достигает такого же эффекта)? Это будет высоко ценится.
В Visual C++ вместо этого вы можете использовать _____VA_ARGS_____. Ссылка: http://msdn.microsoft.com/en-us/library/ms177415(v=vs.110).aspx –
отредактируйте, чтобы показать требуемый '#include' –
robisrob