Chương trình của tôi ghi vào nhật ký và xuất bản. Mỗi tin nhắn, tuy nhiên, có một ưu tiên nhất định và người sử dụng chỉ định trong Preferences ưu tiên mà đi đến dòng (log hoặc stdout).chức năng printf wrapper lọc theo sở thích của người dùng
unsigned short PRIO_HIGH = 0x0001;
unsigned short PRIO_NORMAL = 0x0002;
unsigned short PRIO_LOW = 0x0003;
Chế độ ưu đãi được xử lý bởi một số cờ:
unsigned short PRIO_LOG = (PRIO_HIGH | PRIO_NORMAL);
unsigned short PRIO_STD = (PRIO_HIGH);
Chức năng write_log
nên làm việc với các thông số tương tự như chức năng printf, với tham số bổ sung của unsigned short priority
.
write_log((PRIO_NORMAL|PRIO_LOW), "HELLO %s, take %d", "World", 1);
(Thậm chí nếu PRIO_NORMAL|PRIO_LOW
làm cho chút cảm giác ...)
Kiểm tra cờ rất dễ dàng: if(priority & PRIO_LOG)
(Returns> 1 nếu có cờ được thiết lập ở cả hai đối số)
tôi không thể tuy nhiên tìm làm thế nào tôi sẽ đi về đi qua các chuỗi và đối số định dạng cho hàm printf. Bất cứ ai có thể giúp hoặc cho tôi một con trỏ (có thể một phương pháp thay thế mà đạt được hiệu quả tương tự)? Nó sẽ được nhiều đánh giá cao.
Trong Visual C++ bạn có thể sử dụng _____VA_ARGS_____ để thay thế. Tham khảo: http://msdn.microsoft.com/en-us/library/ms177415(v=vs.110).aspx –
vui lòng chỉnh sửa để hiển thị bắt buộc '#include' –
robisrob