什么是适当的#包括function“睡眠”在C?

我正在使用Big Nerd Ranch的Objective-C编程,并且开头是让我们在前几章中用C编写。 在我的程序之一,我创build了,我使用睡眠function。 在本书中它告诉我把#include <stdlib.h>放在#include <stdio.h>部分下面。 这应该是摆脱了这样的警告:“在C99中隐式声明函数'sleep'是无效的”。 但由于某些原因,我把#include <stdlib.h> ,警告不会消失..这个问题并不能阻止程序运行正常,但我只是好奇哪些#include我需要使用!

睡眠手册页说它是在<unistd.h>声明的。 你有没有把这个包含在你的程序中?

sleep是一个非标准的function。

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

在任何情况下,请检查文档。

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

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

sleep()应该是

 #include <unistd.h> 

sleep(3)是在unistd.h ,而不是stdlib.h 。 在你的命令行inputman 3 sleep来确认你的机器,但是我认为你是在Mac上,因为你正在学习Objective-C,而在Mac上,你需要unistd.h