使用gcc编译带有gets函数的程序

3
每当我尝试这样做时,就会出现以下内容:
警告:`gets'函数具有危险性,不应使用
现在,我知道为什么这个函数很糟糕。但是为了编译我的已经写好的程序,我必须使用这个函数。有什么办法可以避免出现这个警告?[或者一个与此函数完全相同属性的函数。fgets 稍有不同,因此我的代码无法正常工作。]

3
如何通过头文件禁用GCC中的警告信息?你可以在代码中使用预处理指令 #pragma 或者编译选项 -Wno-<warning> 来禁用GCC的警告信息。但是,如果你想要在头文件中禁用警告信息,则可以使用 #pragma system_header 指令。这个指令告诉编译器,当前头文件是一个系统级别的头文件,不应该产生任何警告信息。举个例子:#pragma GCC system_header #include 这里,some_system_header.h 是一个系统级别的头文件,而 #pragma GCC system_header 则告诉编译器不要对这个头文件产生任何警告信息。 - Scooter
1
我同意Scooter的观点,但是个人而言,我会将警告保留在那里,作为提醒,以便在你获得更多圆形物品时使用。使用gets函数是不安全的,忘记使用gets函数更加不安全。 - IdeaHat
1
@Scooter,你所提到的问题解释了为什么gets()是个坏主意,但它并没有解释如何消除警告。这并不实用。 - fuz
2
@FUZxxl 消除警告的方法是停止使用该函数 - user149341
2
@FUZxxl 那你就要接受这个警告了。它并不会阻止程序的编译、链接或运行;它只是提醒你程序存在安全隐患。 - user149341
显示剩余12条评论
3个回答

1

您不应该忽略这个警告。如果您真的无法容忍这个警告,请编写一个简单的脚本来解析输出并丢弃警告,并适当地命名它,以便您使用以下命令进行构建:

make ... | I-am-fully-cognizant-of-the-fact-that-this-program-uses-an-unsafe-function-and-the-resulting-executable-is-completely-unsafe

缩短过滤器名称是不明智的。

0

-1

你尝试过使用-w来禁用警告编译吗?


您IP地址为143.198.54.68,由于运营成本限制,当前对于免费用户的使用频率限制为每个IP每72小时10次对话,如需解除限制,请点击左下角设置图标按钮(手机用户先点击左上角菜单按钮)。 - fuz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接