我正在尝试使用标准输入输出函数 scanf
从控制台获取 long long
。我从 %lld
开始:
scanf("%lld", &rule);
那会抛出:
error: unknown conversion type character 'l' in format [-Werror=format=]
我已经找到了更多解决方法,但它们也会抛出错误:
scanf("%I64d", &rule);
->error: ISO C does not support the 'I64' ms_scanf length modifier [-Werror=format=]
scanf("%"SCNd64"", &rule);
->error: expected ')' before 'SCNd64'
我是否做错了什么?还有其他的窍门吗?
我使用这些标志在最新版本的MinGW GCC上编译:-pedantic -Wall -Werror -std=c99 -g -D HOME=1
rule
是int64_t
类型,那么请尝试使用scanf("%" SCNd64, &rule);
进行输入。请确保包含了inttypes.h
和stdint.h
头文件。更多信息请参考这里。该方法应该在C99中被支持。 - WhozCraig-std=c99
参数吗? - M.M-std=gnu99
产生相同的错误。 - Tomáš Zato