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

时间:2013-02-11 18:02:33

标签: c sleep

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

5 个答案:

答案 0 :(得分:116)

睡眠man page表示它在<unistd.h>中声明。

答案 1 :(得分:52)

sleep是非标准功能。

  • 在UNIX上,您应包含<unistd.h>
  • 在MS-Windows上,Sleep来自<windows.h>

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

答案 2 :(得分:47)

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

#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;
}

答案 3 :(得分:12)

对于sleep(),它应该是

#include <unistd.h>

答案 4 :(得分:5)

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