问题描述
我已经为嵌入式环境编写了一个自定义printf实现。为此,我还添加了一些其他说明符,用于打印唯一的类型和时间戳,以及其他内容:
printf("[%T] time\n");
也许这是唯一的,因为它不接受任何参数,而是在解析器中具有唯一的处理。尽管可以很容易地通过使用宏根据需要始终传递错误数据来补救。或者,如果它引起太多麻烦,我可以使其更具独特性,以使其与其他要做接受参数的说明符不同。
我实现的所有其他自定义类型都像往常一样使用参数。我唯一遇到的麻烦是编译器的警告:
test.c:130:32: warning: unknown conversion type character ‘v’ in format [-Wformat=]
printf("%v\n",type);
^
test.c:130:16: error: too many arguments for format [-Werror=format-extra-args]
printf("%v\n",type);
^~~~~~~~~~~~~~~~~~~~
可以通过添加-Wno-format-extra-args -Wno-format
编译器参数来抑制这些警告,我现在这样做了。但这可以掩盖真正的错误,例如在期望的指针处传递整数,或者合法地为给定的说明符列表不提供足够的参数。
是否可以向printf
样式的函数中添加 new 语义检查?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)