C中函数'sleep'的正确#include是什么?

trl*_*udt 104 c sleep

我正在使用Big Nerd Ranch书籍Objective-C编程,它首先让我们在前几章中用C语言编写.在我创建的一个程序中,我使用了sleep功能.它在书中告诉我要把它放在#include <stdlib.h>下面#include <stdio.h>.这应该摆脱警告说"隐含声明功能'睡眠'在C99中无效".但是由于某些原因我放#include <stdlib.h>了之后,警告并没有消失.这个问题并没有阻止程序运行良好,但我只是好奇#include我需要使用它!

sim*_*onc 132

睡眠手册页说它是在声明的<unistd.h>.


md5*_*md5 58

sleep 是一个非标准的功能.

  • 在UNIX上,您应该包括<unistd.h>.
  • 在MS-Windows上,Sleep而不是<windows.h>.

在每种情况下,请查看文档.

  • 不要使用usleep:_"4.3BSD,POSIX.1-2001.POSIX.1-2001声明此函数已废弃;请改用nanosleep(2).POSIX.1-2008删除usleep()的规范."_ https ://linux.die.net/man/3/usleep (4认同)
  • C标准。wrt POSIX,是 (3认同)

小智 51

这是我用于跨平台代码的内容:

#ifdef _WIN32
#include <Windows.h>
#else
#include <unistd.h>
#endif

int main()
{
  pollingDelay = 100
  //do stuff

  //sleep:
  #ifdef _WIN32
  Sleep(pollingDelay);
  #else
  usleep(pollingDelay*1000);  /* sleep for 100 milliSeconds */
  #endif

  //do stuff again
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

  • usleep()已在POSIX.1-2008中删除.使用nanosleep().https://linux.die.net/man/3/usleep (9认同)

alk*_*alk 13

因为sleep()它应该是

#include <unistd.h>
Run Code Online (Sandbox Code Playgroud)


Car*_*rum 7

sleep(3)unistd.h,不是stdlib.hman 3 sleep在命令行上键入以确认您的机器,但由于您正在学习Objective-C,因此我认为您使用的是Mac,而在Mac上则需要unistd.h