当我在 CodeBlocks 中使用说明符 F 时,为什么编译器会给出错误“格式参数过多”?
#include <stdio.h>
int main()
{
float x = 3.14159;
printf("%f\n", x);
printf("%F\n", x);
return 0;
}
错误:
error: unknown conversion type character 'F' in format [-Werror=format=]
error: too many arguments for format [-Werror=format-extra-args]
看起来有些版本的 GCC 无法识别%F
, 说来也怪。我的gcc version 9.2.0 (tdm64-1)
对于具有 C11 标准的 Windows,无法识别它,尽管它仅发出警告消息而不是错误。
$ gcc main2.c -Wextra -Wall -pedantic -std=c11
main2.c: In function 'main':
main2.c:7:14: warning: unknown conversion type character 'F' in format [-Wformat=]
7 | printf("%F\n", x);
| ^
main2.c:7:12: warning: too many arguments for format [-Wformat-extra-args]
7 | printf("%F\n", x);
| ^~~~~~
执行时不会打印该值。
我猜您可能在 Windows 系统中使用某些 mingW 安装,并且您的编译器必须将警告视为错误,这不是一个坏主意。
As @HolyBlackCat 建议 https://stackoverflow.com/questions/62243319/printff-x-ok-printff-x-error-too-many-arguments-for-format/62243694?noredirect=1#comment110083072_62243694,添加-D__USE_MINGW_ANSI_STDIO
标志解决了这个问题。
这个线程 https://stackoverflow.com/a/52383920/6865932有关于如何操作的说明。
@RobertS 支持 Monica Cellio 的回答 https://stackoverflow.com/a/62243647/6865932有一个链接,其中包含有关如何将其添加到 CodeBlocks 的说明。
或者,为了快速修复代码,您可以使用%G
, or %E
用于科学记数法。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)