在我的代码中使用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]
任何具体原因?
答案 0 :(得分:3)
有人能解释为什么编译器会这样显示......?
是的,因为gets()
函数很危险,因为它遇到了缓冲区溢出问题。任何人都应该避免使用它。
此外,关于-Wdeprecated-declarations
的警告,gets()
不再是C
标准[C11
以后的一部分]。因此,C库编译器不是绑定以支持它。它将来可以删除。为了警告开发人员潜在的陷阱并阻止进一步使用gets()
,编译器 ## 会发出警告消息。
(##)要迂腐,编译器(gcc
)本身并不会生成警告,而是由pragma
或gets()
或glibc
的实现引起的。导致编译器发出警告的list.style.visibility
中的1}}。 [礼貌,FUZxxl,来自重复的答案。]
答案 1 :(得分:2)
gets
可能导致缓冲区溢出,因为它不考虑数据的长度。更多详情请点击此处:gets() function in C
已弃用的消息表示此函数已标记为已弃用,可能会在以后删除标准。所以不鼓励用户使用它。