gpt4 book ai didi

c - scanf() 中的反转参数

转载 作者:太空狗 更新时间:2023-10-29 16:37:29 26 4
gpt4 key购买 nike

我(很快)写了一些代码,不小心反转了 scanf() 中的参数:

char i[] = "ABC1\t";
scanf(i, "%s");

gcc -Werror -Wall -Wextra 编译不会提示这一点。显然,这段代码不起作用,但为什么 gcc 没有通知我我反转了参数?它不能检测到 i 不是格式字符串,或者第二个参数不是可存储类型吗?

编辑
感谢所有的洞察力,看起来我找到了答案,-Wformat 标志有一个扭曲,使这个“可捕捉”(张贴在下面以供引用)

最佳答案

哈!我找到了。使用 -Wformat=2 标志点击 gcc 捕获它。

发布信息以供他人引用:

这是 list of flags I found

-W格式
检查对 printf 和 scanf 等的调用,以确保提供的参数具有适合指定格式字符串的类型...

我曾假设 -Wall 中有 -Wformat,确实如此,但关于我刚刚发现的内容的真正重要部分:

-Wformat 包含在 -Wall 中。为了更好地控制格式检查的某些方面,选项 -Wformat-y2k、-Wno-format-extra-args、-Wno-format-zero-length、-Wformat-nonliteral、-Wformat-security 和 -Wformat=2可用,但不包含在 -Wall 中。

关于c - scanf() 中的反转参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13068619/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com