为什么get()被弃用?
在我的代码中使用gets()
时,编译器会大喊大叫
warning: the 'gets' function is dangerous and should not be used.`
和
warning: 'gets' is deprecated (declared at /usr/include/stdio.h:638) [-Wdeprecated-declarations]
任何具体原因?
有人可以解释为什么编译器显示那样……?
是的,因为, gets()
函数是危险的,因为它遇到缓冲区溢出问题。 任何人都应该避免使用它。
此外,关于使用-Wdeprecated-declarations
的警告, gets()
不再是C
标准[ C11
以后]的一部分。 所以,C库 编译器 不再支持那种了。 它将来可以删除。 为了警告开发人员潜在的陷阱并阻止进一步使用gets()
,编译器##会发出警告消息。
(##)要迂腐,编译器( gcc
)本身并不会生成警告,而是由glibc
中gets()
实现的pragma
或属性引起编译器发出警告。 [礼貌,FUZxxl,来自骗局答案。]
-
gets
可能会导致缓冲区溢出,因为它不考虑数据的长度。 更多细节在这里: C中的gets()函数 -
不推荐使用的消息意味着,此function被标记为已弃用,可能会在以后删除标准。 因此不鼓励用户使用它。