filtert Mein Programm schreibt in ein Protokoll und stdout. Jede Nachricht hat jedoch eine bestimmte Priorität und der Benutzer gibt in den Voreinstellungen an, welche Prioritäten in welchen Stream (log oder stdout) gehen.wrapper printf-Funktion, die nach Benutzervorgaben
unsigned short PRIO_HIGH = 0x0001;
unsigned short PRIO_NORMAL = 0x0002;
unsigned short PRIO_LOW = 0x0003;
Die Präferenzen werden von einigen Flags behandelt:
unsigned short PRIO_LOG = (PRIO_HIGH | PRIO_NORMAL);
unsigned short PRIO_STD = (PRIO_HIGH);
Die write_log
Funktion sollte mit den gleichen Parametern wie die printf-Funktion, mit dem zusätzlichen Parameter von unsigned short priority
arbeiten.
write_log((PRIO_NORMAL|PRIO_LOW), "HELLO %s, take %d", "World", 1);
(Auch wenn PRIO_NORMAL|PRIO_LOW
wenig Sinn macht ...)
die Fahnen Überprüfung ist einfach: if(priority & PRIO_LOG)
(Returns 1>, wenn eine Flagge in beiden Argumenten festgelegt ist)
Ich kann aber nicht finden heraus, wie ich gehen würde über die Übergabe der String-Literal und die Format Argumente für die printf-Funktion. Kann mir jemand helfen oder mir einen Zeiger geben (möglich zu einer alternativen Methode, die den gleichen Effekt erzielt)? Es wäre sehr geschätzt.
In Visual C++ können Sie stattdessen _____VA_ARGS_____ verwenden. Referenz: http://msdn.microsoft.com/en-us/library/ms177415(v=vs.110).aspx –
Bitte bearbeiten, um anzuzeigen '#include' –
robisrob