c - 使用 -std=c99 的隐式声明

标签 c gcc

我收到此警告:(-std=c99 -pedantic)

warning: implicit declaration of function ‘strndup’ [-Wimplicit-function-declaration]

但我正在导入这些库:

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

那又怎样?! :(


// file.c:
    #include "file.h"
    strndup(...)
// file.h:
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>

最佳答案

问题是您对 -std=c99 选项的使用。由于 strndup() 不是 C99 的一部分,并且您要求编译器进入标准兼容模式,它不会为其提供原型(prototype)。它当然仍然链接,因为你的 C 库有它。

虽然您可以通过自己指定功能宏来诱导 gcc 提供它,但我认为处于 C99 兼容模式没有多大意义 例如要求 GNU 扩展。 gcc 已经为此提供了一个模式,它将解决您的警告:-std=gnu99

关于c - 使用 -std=c99 的隐式声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39926605/

相关文章:

为 Linux 创建可跨不同 GCC 版本移植的静态 C 库

c - 如何在 Linux 中抑制 -Werror=pointer-to-int-cast 和 -Werror=address 类型的错误

c++ - 使用 cygwin 从 Nmake 切换到 MinGW

c - clang <built-in> 头文件在哪里?

c - 处理十进制数的转换

使用 for 循环创建链表

linux - 当一个人想要编写一个工具集时,将头文件放在/usr/include 并将 'foreign/user' 创建的代码放入/usr/local/lib 是标准做法吗?

c++ - 为什么 g++ 从带有转换运算符和不可访问的函数调用运算符的类型中初始化 std::function<> 失败?

c - 从 Linux C 调用网页

c - 在 gcc 编译期间获取内联失败警告