Programım bir günlüğe ve stdout'a yazar. Bununla birlikte, her mesajın belirli bir önceliği vardır ve kullanıcı hangi önceliklerin hangi akışa (log veya stdout) gittiğini Tercihler bölümünde belirtir.Kullanıcı tercihlerine göre filtreler olan wrapper printf işlevi
unsigned short PRIO_HIGH = 0x0001;
unsigned short PRIO_NORMAL = 0x0002;
unsigned short PRIO_LOW = 0x0003;
tercihleri bazı bayrakları ile işlenir:
unsigned short PRIO_LOG = (PRIO_HIGH | PRIO_NORMAL);
unsigned short PRIO_STD = (PRIO_HIGH);
write_log
fonksiyon unsigned short priority
katma parametre ile printf işleviyle aynı parametrelerle birlikte çalışmalıdır. bayrakları Denetleme
write_log((PRIO_NORMAL|PRIO_LOW), "HELLO %s, take %d", "World", 1);
(PRIO_NORMAL|PRIO_LOW
biraz mantıklı bile ...)
kolaydır: (herhangi bir bayrak hem argüman olarak ayarlanırsa İade 1'e>) if(priority & PRIO_LOG)
Ben ancak bulamıyorum dize literal ve yazdırma biçimi işlevine biçim argümanlarını iletmek için nasıl giderim. Herkes bana bir işaretçi verebilir veya verebilir (aynı etkiyi gerçekleştiren alternatif bir yönteme mümkün)? Çok takdir edilecektir.
Visual C++ uygulamasında bunun yerine _____VA_ARGS_____ kullanabilirsiniz. Referans: http://msdn.microsoft.com/en-us/library/ms177415(v=vs.110).aspx –
Lütfen görüntülemek için Düzenle '#include ' –
robisrob