c - 为什么 gcc 提示 gets()

标签 c function gcc declaration

这是我的代码(简化版):

#include <stdio.h>
#include <string.h>

#define SIZE 240

int main(void)
{
    char word[SIZE];
    gets(word);

    return 0;
}

为什么 GCC 给我

№3.c:在函数“main”中: №3.c:13:2:警告:函数‘gets’的隐式声明[-Wimplicit-function-declaration]

这个警告?

GCC 版本是 5.2.1

P.S.该程序正在运行。

附言我永远不会用gets(),我永远不会用gets(),我永远不会用gets(),我永远不会用gets()

最佳答案

函数gets C 标准不再支持它,因为它是一个不安全的函数。所以函数声明似乎被排除在标题<stdio.h>之外现在编译器不知道 gets 的声明是什么.

来自 C 标准(前言)

6 This third edition cancels and replaces the second edition, ISO/IEC 9899:1999, as corrected by ISO/IEC 9899:1999/Cor 1:2001, ISO/IEC 9899:1999/Cor 2:2004, and ISO/IEC 9899:1999/Cor 3:2007. Major changes from the previous edition include:

...

— removed the gets function (<stdio.h>)

关于c - 为什么 gcc 提示 gets(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35358767/

相关文章:

c - 计时的宏观问题

c - 使用 scanf 将字符串存储在结构中

c - C中的许多包装函数

c - "sizeof (char[0])"怎么用 GCC 编译得很好

c# - PInvoke 找到一些函数,但找不到其他函数

c++ - 如果两个数据之间的不变量必须在所有线程上保持不变,它是否会强制对这些数据的读/写处于临界区?

c++ - ./lib/gcc/x86_64-linux-gnu/4.6/libstdc++.a 的用法是什么

C-分配内存的函数

C/程序集 : how to change a single bit in a CPU register?

gcc - 如何使用gdb读取所有寄存器的值?