【发布时间】:2014-09-09 21:26:49
【问题描述】:
我有兴趣在 C 语言中使用 function(specifier, ...); 风格的变量参数函数,用于其他目的,而不是花哨的打印或指定格式的读取。
示例可能包括自定义数据库列、将可变参数传递给可根据内容对其进行序列化的函数以及许多其他示例。
我知道基本用法:
char buffer[BUF_SIZE]
va_list args;
va_start(args, format);
vsnprintf(buffer, BUF_SIZE-1, format, args);
va_end(args);
这不是我要问的。
假设我想制作自己的 printf,它使用完全不同的格式,例如,它使用格式列表而不是格式字符串 - 指定类型的枚举数组,或其他方式来指定确切加载到... - 甚至 register_printf_function-> 都无法帮助我,出于某种原因,我不愿意尝试根据提供的数据构建格式字符串。
那么,我将如何从额外的省略号中访问数据(而不是将其盲目地传递给一个神奇的 vprintf 而不在其中窥视)?
【问题讨论】:
标签: c variadic-functions