加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

是否可以自定义printf?

发布时间:2020-12-16 03:23:43 所属栏目:百科 来源:网络整理
导读:我有一些结构,我需要经常打印.现在,我在这个结构体周围使用了一个古典的打印包装 void printf_mystruct(struct* my_struct){ if (my_struct==NULL) return; printf("[value1:%d value2:%d]",struct-value1,struct-value2);} 这个功能很方便,但也很有限.我不
我有一些结构,我需要经常打印.现在,我在这个结构体周围使用了一个古典的打印包装
void printf_mystruct(struct* my_struct)
{
   if (my_struct==NULL) return;
   printf("[value1:%d value2:%d]",struct->value1,struct->value2);
}

这个功能很方便,但也很有限.我不能打印或附加一些文本,而不必制作新的包装.我知道我可以使用va_arg系列来添加或者添加一些文本,但是我觉得我会重新实现.

我想知道是否可以为printf写一个自定义函数.我想要写这样的东西:

register2printf("%mys",&printf_mystruct); 
...
if (incorrect)
  printf("[%l] Struct is incorrect : %mysn",log_level,my_struct);

这可能吗 ?我该怎么做?

注意:我在Ubuntu Linux 10.04下,我使用gcc.

解决方法

对不起,但有一些答案在使用Glibc的Linux上是不正确的

在带有GNU Glibc的Linux上,您可以使用customize printf:您可以打电话
register_printf_function到例如在您的printf格式字符串中定义%Y的含义.

但是,这个行为是Glibc具体的,甚至可能已经过时了…我不知道我会推荐这种方法!

如果在C中编码,则C流库具有可以扩展的操纵器,并且您也可以为您的类型重载操作符<等等

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读