c语言sleep用法是啥?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言sleep用法是啥?相关的知识,希望对你有一定的参考价值。
我以前Sleep(1000)等于一秒,现在sleep(1)等于一秒,,,什么情况
C语言标准库中没有sleep这个函数,它实际上是一个系统API函数。
SLEEP是一种函数,作用是延时,程序暂停若干时间,在执行时要抛出一个中断异常,必须对其进行捕获并处理才可以使用这个函数。
Sleep()没有返回值,作用是暂停程序,单位是毫秒。
比如:Sleep(10)的意思是暂停10毫秒.
参考技术A 1.函数名:delay
功
能:
将程序的执行暂停一段时间(毫秒)
用
法:
void
delay(unsigned
milliseconds);
程序例:
/*
emits
a
440-hz
tone
for
500
milliseconds
*/
#include<dos.h>
int
main(void)
sound(440);
delay(500);
nosound();
return
0;
2.#include<windows.h>
#include
&l护笭篙蝗蕻豪戈通恭坤t;stdio.h>
void
main()
printf("begin");
sleep(1000);
printf("end");
函数“sleep()”的正确#include 是啥?
【中文标题】函数“sleep()”的正确#include 是啥?【英文标题】:What is the proper #include for the function 'sleep()'?函数“sleep()”的正确#include 是什么? 【发布时间】:2013-01-26 21:43:56 【问题描述】:我正在使用 Big Nerd Ranch 的《Objective-C Programming》一书,它首先让我们在前几章中用 C 语言编写。在我创建的一个程序中,我使用了睡眠功能。在书中它告诉我将#include <stdlib.h>
放在#include <stdio.h>
部分下。这应该消除“函数'sleep'的隐式声明在C99中无效”的警告。但是由于某种原因,在我输入#include <stdlib.h>
之后,警告并没有消失。这个问题并没有阻止程序正常运行,但我只是好奇我需要使用哪个#include
!
【问题讨论】:
如果您使用任何市长 IDE(NetBeans、IntelliJ IDEA、Eclipse)。键入任何函数的名称,然后 Alt+Enter 它将自动导入具有它的库。 @T04435:在 C 库中未导入。编译器确实不需要它们。链接器可能链接它们,但只有在编译器完成之后。在 C 中,编译器需要一个函数的原型才能使用函数。原型通常出现在 头文件 (.h) 中。 【参考方案1】:睡眠man page 表示它在<unistd.h>
中声明。
简介:
#include <unistd.h>
unsigned int sleep(unsigned int seconds);
【讨论】:
我没有!谢谢!这让我有点困扰,因为这本书说time()
确实不会根据传递的参数创建一个延迟,至少不是一个明确定义的延迟。【参考方案2】:
sleep
是一个非标准函数。
<unistd.h>
。
在 MS-Windows 上,Sleep
来自 <windows.h>
。
在任何情况下,检查文档。
【讨论】:
w.r.t. C标准。 w.r.t. POSIX,它是 在 UNIX 上,Sleep 实际上是 usleep,它需要微秒(毫秒*1000)而不是秒。 不要使用 usleep:"4.3BSD,POSIX.1-2001。POSIX.1-2001 声明此函数已过时;改用 nanosleep(2)。POSIX.1-2008 删除usleep() 的规范。” linux.die.net/man/3/usleep Windows 的Sleep()
和 POSIX 的 sleep()
不相同。他们采取不同的论点。前者需要几毫秒,后者需要几秒钟!【参考方案3】:
sleep(3)
位于 unistd.h
,而不是 stdlib.h
。在你的命令行上输入man 3 sleep
来确认你的机器,但我假设你是在Mac 上,因为你正在学习Objective-C,而在Mac 上,你需要unistd.h
。
【讨论】:
【参考方案4】:函数“sleep()”的正确#include 是什么?
sleep()
不是标准 C,而是 POSIX,所以它应该是:
#include <unistd.h>
【讨论】:
【参考方案5】:这是我用于跨平台代码的:
#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;
【讨论】:
usleep() 在 POSIX.1-2008 中被移除。使用 nanosleep()。 linux.die.net/man/3/usleep以上是关于c语言sleep用法是啥?的主要内容,如果未能解决你的问题,请参考以下文章