gpt4 book ai didi

c - 函数 usleep 的隐式声明

转载 作者:太空狗 更新时间:2023-10-29 16:24:42 24 4
gpt4 key购买 nike

gcc (GCC) 4.6.3
c89

我正在尝试使用 usleep。但是,我不断收到以下警告:

implicit declaration of function usleep

我已经包含了 unistd.h 头文件。

手册页提到了一些关于这个的内容。但我不确定我是否理解它:

usleep():
Since glibc 2.12:
_BSD_SOURCE ||
(_XOPEN_SOURCE >= 500 ||
_XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED) &&
!(_POSIX_C_SOURCE >= 200809L || _XOPEN_SOURCE >= 700)
Before glibc 2.12:
_BSD_SOURCE || _XOPEN_SOURCE >= 500 || _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED

但不确定我要如何处理上述内容?

最佳答案

该列表是定义 usleep 的先决条件。它基本上是一个类似 C 的表达式,涉及 #define 变量,在包含头文件之前必须为真。

头文件本身只会在通常是大量#ifdef 语句的嵌套中定义usleep,开发人员已经花时间告诉您需要做什么这样做你就不必花几个小时自己弄明白了:-)

假设您使用的是 glibc 2.12 或更高版本,这意味着您要么必须:

  • 声明_BSD_SOURCE;或
  • 声明其他三个东西的复杂组合,我不会费心去解码。

可能最简单的修复方法是简单地使用 gcc -D _BSD_SOURCE 进行编译或输入:

#define _BSD_SOURCE

在包含为您提供 usleep 的头文件之前的代码中。

您可能希望在任何包含之前定义它们,以防各种头文件之间存在依赖关系。

关于c - 函数 usleep 的隐式声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10053788/

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