Ответ 1
Может кто-то объясняет, почему компилятор показывает это...?
Да, потому что функция gets()
опасна, так как она страдает от проблемы переполнения буфера. Любой человек должен воздержаться от использования этого.
Кроме того, что касается предупреждения с помощью -Wdeprecated-declarations
, gets()
больше не является частью стандарта C
[C11
и далее]. Таким образом, C-библиотеки компиляторы не обязаны это поддерживать. Его можно удалить в будущем. Чтобы предупредить разработчика о потенциальной ловушке и препятствовать дальнейшему использованию gets()
, компилятор ## выдает предупреждающее сообщение.
(##) Чтобы быть педантичным, предупреждение не генерируется компилятором (gcc
) само по себе, а вызвано pragma
или атрибутом реализации gets()
в glibc
, который заставляет компилятор выпустить предупреждение. [Предоставлено, FUZxxl, из ответа об ошибке.]