我有一些结构,我需要经常打印.现在,我在这个结构体周围使用了一个古典的打印包装
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 : %mys\n",log_level,my_struct);
这可能吗 ?我该怎么做?
注意:我在Ubuntu Linux 10.04下,我使用gcc.
解决方法
对不起,但有一些答案在使用Glibc的Linux上是不正确的
在带有GNU Glibc的Linux上,您可以使用customize printf:您可以打电话
register_printf_function到例如在您的printf格式字符串中定义%Y的含义.
但是,这个行为是Glibc具体的,甚至可能已经过时了…我不知道我会推荐这种方法!
如果在C中编码,则C流库具有可以扩展的操纵器,并且您也可以为您的类型重载操作符<等等
原文地址:https://www.jb51.cc/c/111554.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。