【发布时间】:2016-01-24 03:13:10
【问题描述】:
我知道你很快点击了这个期望回答NEVER USE GETS!,但我有一个正当的理由。我正在了解缓冲区溢出,需要有目的地开发易受攻击的软件。
那么,正如标题所述,我如何忽略警告以便编译成功?我试过了:
gcc bo.c -o bo -Wall
...无济于事。
感谢您的帮助。
【问题讨论】:
-
fgets可能会导致缓冲区溢出。只需提供比真实尺寸更宽的尺寸。所以我想你真的应该避免gets。从最新的C标准中去掉了,所以基本没了 -
顺便说一句:警告是什么?
-
从技术上讲,编译确实成功并带有警告。这就是使它们发出警告而不是错误的原因。您能否显示您收到警告的代码行,以及消息是什么?
gets调用不会无条件生成警告。 -
首先,-Wall 与您想要的相反。其次,警告不会导致编译不成功。即使您收到警告,您的代码也会编译成可执行文件。
-
假设您有特殊原因开发不良代码,我会不关闭警告。如果你只在你愿意使用get而不应该使用的行上得到警告,这意味着剩余的代码看起来是正确的。如果您关闭警告,代码可能会因不必要的原因而失败。
标签: c