有没有办法让gcc或clang为printf()格式说明符生成带有符号和无符号变量不匹配的警告?
我知道使用-Wformat,但是如果数据类型的大小不正确,则仅报告警告.如果只有标志不正确,它不会生成警告.
例如,即使与签名的unsigned int打印不匹配,以下内容也不会生成警告:
uint32_t x = UINT_MAX;
printf("%d", x);
Run Code Online (Sandbox Code Playgroud)
这将打印出-1.
看起来这将是一个有用的警告,但我没有找到任何方法来启用它.
使用:-Wformat连同-Wformat-signedness(-Wformat必须存在).
如果参数的printf说明符的签名不正确,后一个警告选项将发出警告.
gcc 6.2将产生此警告:警告:格式'%d'需要类型为'int'的参数,但参数2的类型为'uint32_t {aka unsigned int}'[ - Wformat =]
也uint32_t x = UINT_MAX;应该是uint32_t x = UINT32_MAX;
| 归档时间: |
|
| 查看次数: |
361 次 |
| 最近记录: |