gpt4 book ai didi

c - 函数 ‘fgetc_unlocked’ 的隐式声明,使用 gcc 5.2

转载 作者:太空宇宙 更新时间:2023-11-04 07:04:52 25 4
gpt4 key购买 nike

我有以下代码:

#include <stdio.h>

int main() {
putc_unlocked('a', stdout);
return 0;
}

当我使用 gcc file.c 编译它时没有出现错误,但是,如果我使用 gcc -std=c11 file.c,我得到:

file.c: In function ‘main’:
file.c:4:2: warning: implicit declaration of function ‘putc_unlocked’ [-Wimplicit-function-declaration]
putc_unlocked('a', stdout);
^

为什么?

最佳答案

使用 -std=cxx 进行编译,其中 xx 为 99 或 11,具体取决于您使用的 C 版本将使用与使用 -std=gnuxx 进行编译不同的头文件(这里又是 xx = 99 或 11)。

GCC 5.2 的默认设置(如果您未指定命令行参数)是 -std=gnu11

gnu 设置定义宏:

  1. _GNU_SOURCE,打开 GNU 独有的功能;
  2. _POSIX_SOURCE,打开 POSIX 功能;
  3. 也许还有其他人? (_BSD_SOURCE 是一种可能性,但我不确定)。

如果您使用 -std=cxx 进行编译,那么您将获得标准 C 而不是任何扩展。

所以这个警告是因为那个函数不是 C 标准的一部分。因此,您获得了函数的隐式声明(这是旧 C 标准所允许的,并为向后兼容而保留)。

如果您想使用 -std=cxx 进行编译,您可以编辑您的文件以包含 #define _POSIX_SOURCE

关于c - 函数 ‘fgetc_unlocked’ 的隐式声明,使用 gcc 5.2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33954480/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com