gpt4 book ai didi

c - 根据用户偏好进行过滤的包装器 printf 函数

转载 作者:太空狗 更新时间:2023-10-29 16:30:08 25 4
gpt4 key购买 nike

我的程序写入日志和标准输出。然而,每条消息都有一定的优先级,用户在首选项中指定哪些优先级进入哪个流(日志或标准输出)。

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 函数。任何人都可以帮助或给我一个指针(可能是达到相同效果的替代方法)?将不胜感激。

最佳答案

您想使用 C 的可变参数“varargs”功能调用 vprintf() 而不是 printf()。

#include <stdarg.h>

int write_log(int priority, const char *format, ...)
{
va_list args;
va_start(args, format);

if(priority & PRIO_LOG)
vprintf(format, args);

va_end(args);
}

有关更多信息,请参阅 this 中的内容.

关于c - 根据用户偏好进行过滤的包装器 printf 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1516370/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com