【问题标题】:Can I add new format specifier type to C printf in Linux platform我可以在 Linux 平台的 C printf 中添加新的格式说明符类型吗
【发布时间】:2014-07-17 22:29:14
【问题描述】:

如何添加一个新的格式说明符,例如 %k,它将以特定格式打印特定的用户定义结构?

我想做什么:-

struct k {
    //members
}s1;
printf ("%k", s1);

这个printf 应该以用户定义的方式打印结构。

【问题讨论】:

  • 我建议不要像这样通过值传递结构,否则它取决于您的 C 库。对于 glibc 案例,下面有一个很好的答案。
  • @CarlNorum:按值传递 small 结构通常没有问题。在任何情况下,特定于 glibc 的解决方案也应该适用于指向结构的指针。

标签: c


【解决方案1】:

是的,可以(但不可移植)使用 register_printf_function,有关更多详细信息,请参阅 libc 文档中的 12.13 Customizing printf

GNU C 库可让您定义自己的自定义转换 printf 模板字符串的说明符,教 printf 聪明的方法 打印程序的重要数据结构。

Here 是如何为 MAC 地址创建此类自定义格式说明符的示例。

【讨论】:

  • 请记住,GNU C 库与 GNU C 编译器 (gcc) 是分开的。有些系统(Cygwin 和 MinGW 是示例)使用 gcc 编译器和非 glibc 库。
猜你喜欢
  • 2020-05-23
  • 2020-10-07
  • 1970-01-01
  • 2017-11-16
  • 1970-01-01
  • 2011-01-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多