gpt4 book ai didi

c - 如何创建类似 printf 变量参数的函数

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

我想为我的日志记录实现一个像 printf 这样的 API。它应该类似于调用 printf。例如:

persistent_log(LogType0, "This is buffered writing %d", i);

我查看了变量参数的东西,但似乎我需要知道那里参数的数量和类型。所以在这方面我需要更多帮助。

最佳答案

这是我发现对我来说效果很好的过去项目的摘录。当然缺少一些初始化步骤。这里的关键是 vfprintf 函数,它将处理打印各种参数的细节。

void _proxy_log(log_level_t level, const char *fmt, ...)
__attribute__((format (printf, 2, 3)));

#define proxy_log(level, fmt, ...) _proxy_log(level, fmt"\n", ##__VA_ARGS__)

void _proxy_log(log_level_t level, const char *fmt, ...) {
va_list arg;
FILE *log_file = (level == LOG_ERROR) ? err_log : info_log;

/* Check if the message should be logged */
if (level > log_level)
return;

/* Write the error message */
va_start(arg, fmt);
vfprintf(log_file, fmt, arg);
va_end(arg);

#ifdef DEBUG
fflush(log_file);
fsync(fileno(log_file));
#endif
}

关于c - 如何创建类似 printf 变量参数的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7031116/

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