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