我正在使用 Big Nerd Ranch 的《Objective-C Programming》一书,它首先让我们在前几章中用 C 语言编写。在我创建的一个程序中,我使用了睡眠功能。在书中它告诉我把它放在#include <stdlib.h>
下面#include <stdio.h>
。这应该消除“函数'sleep'的隐式声明在C99中无效”的警告。但是由于某种原因,我放#include <stdlib.h>
了之后,警告并没有消失。这个问题并没有阻止程序运行良好,但我只是好奇#include
我需要使用哪个!
问问题
433375 次
5 回答
194
于 2013-02-11T18:03:35.520 回答
79
sleep
是一个非标准函数。
- 在 UNIX 上,您应包括
<unistd.h>
. - 在 MS-Windows 上,
Sleep
相当来自<windows.h>
.
在任何情况下,请检查文档。
于 2013-02-11T18:03:57.973 回答
72
这是我用于跨平台代码的内容:
#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;
}
于 2014-04-18T17:34:34.303 回答
15
函数“sleep()”的正确#include 是什么?
sleep()
不是标准 C,而是 POSIX,所以它应该是:
#include <unistd.h>
于 2013-02-11T18:04:47.077 回答
9
sleep(3)
是在unistd.h
,不是stdlib.h
。在命令行上键入man 3 sleep
以确认您的机器,但我假设您使用的是 Mac,因为您正在学习 Objective-C,而在 Mac 上,您需要unistd.h
.
于 2013-02-11T18:04:00.323 回答