自定义printf实施禁止显示格式和多余的args警告

问题描述

我已经为嵌入式环境编写了一个自定义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 (将#修改为@)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...