函数‘ sleep()’的正确 # include 是什么?

我正在使用大书呆农场的书目标 C 编程,它开始让我们写在 C 在头几章。在我的一个程序中,它让我创建,我使用睡眠函数。在书中,它告诉我把 #include <stdlib.h>放在 #include <stdio.h>的下面。这样做是为了消除“在 C99中隐式声明函数‘ sleep’无效”的警告。但出于某种原因,在我把 #include <stdlib.h>,警告不会消失。.这个问题并没有阻止程序正常运行,但是我只是好奇我需要使用哪个 #include

451898 次浏览

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

剧情简介:

#include <unistd.h>

无符号整数睡眠(无符号整数秒) ;

sleep是一个非标准函数。

  • 在 UNIX 上,应该包括 <unistd.h>
  • 在 MS-Windows 上,Sleep更像是来自 <windows.h>

在每种情况下,检查文档。

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

函数‘ sleep ()’的正确 # include 是什么?

sleep()不是标准 C,但 POSIX 应该是:

#include <unistd.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是一个非标准函数,我使用标准库 time.h创建了一个 sleep函数

#include <time.h>


void sleep(double s) {
time_t cur_time = time(NULL);
while ((difftime(time(NULL), cur_time)) < s);
}