提问人:Rodion Iskhakov 提问时间:12/10/2022 最后编辑:chqrlieRodion Iskhakov 更新时间:12/11/2022 访问量:132
两个 -Wformat 警告(未知的转换类型和格式参数过多)
Two -Wformat warnings (unknown conversion type & too many arguments for format)
问:
#include <stdio.h>
int main()
{
unsigned long long int the_num = 600851475143;
printf("%llu", the_num);
return 0;
}
当我尝试编译它时,我收到以下警告:
3.c: In function 'main':
3.c:10:12: warning: unknown conversion type character 'l' in format [-Wformat=]
printf("%llu", the_num);
^
3.c:10:9: warning: too many arguments for format [-Wformat-extra-args]
printf("%llu", the_num);
^~~~~~
也许这只是一个错误或其他什么?..
GCC 版本:
gcc version 6.3.0 (MinGW.org GCC-6.3.0-1)
使用以下命令编译:
gcc -Wall -Wextra -pedantic 3.c
答:
2赞
Rodion Iskhakov
12/10/2022
#1
我通过在编译时添加标志来更改语言标准,警告消失了。c99
-std=c99
评论
2赞
chqrlie
12/11/2022
该警告具有误导性,应被视为错误。编译器知道类型,只是被指示认为它们不受支持。因此,警告应为:long long
warning: unsigned long long conversion unsupported in current configuration [-Wformat=]
评论
u
unsigned long long int the_num = 600851475143u;