在VC中Sleep中的第一个英文字符为大写的"S"
在标准C中是sleep, 不要大写。下面使用大写的来说明(具体用什么看你用什么编译器. 简单的说VC用Sleep, 别的一律使用sleep)
Sleep函数的一般形式:
Sleep(unsigned long);
在标准C中是sleep, 不要大写。下面使用大写的来说明(具体用什么看你用什么编译器. 简单的说VC用Sleep, 别的一律使用sleep)
Sleep函数的一般形式:
Sleep(unsigned long);
其中,Sleep()里面的单位,是以毫秒为单位,所以如果想让函数滞留1秒的话,应该是
#inlcude <windows.h>
Sleep(1000);
在Linux下,sleep中的“s”不大写
sleep()单位为秒,usleep()里面的单位是微秒。
在内核中,sleep的实现是由pause函数和alarm函数两个实现的。
特别注意在Codeblocks环境下是无法使用sleep函数的,因为在windows上Codeblocks采用mingw(Gnu在Window环境下的编译器,
可以充分使用WindowsApi)作为编译器,而在stdlib.h中sleep的说明如下:_CRTIMP void __cdecl __MINGW_NOTHROW _sleep (unsigned long) __MINGW_ATTRIB_DEPRECATED;可以认为mingw舍弃了sleep函数,建议用Sleep实现sleep。
#include <unistd.h>
sleep(1);
Windows下实现微秒延迟(并不完全精确)
void delay_us(void)
{
LARGE_INTEGER litmp;
LONGLONG QPart1, QPart2;
double dfMinus, dfFreq, dfTim;
QueryPerformanceFrequency(&litmp);
dfFreq = (double)litmp.QuadPart;// 获得计数器的时钟频率
QueryPerformanceCounter(&litmp);
QPart1 = litmp.QuadPart;// 获得初始值
do {
QueryPerformanceCounter(&litmp);
QPart2 = litmp.QuadPart;//获得中止值
dfMinus = (double)(QPart2-QPart1);
dfTim = dfMinus / dfFreq;// 获得对应的时间值,单位为秒
}while(dfTim<0.000001);
}
int main()
{
printf("The start clock is: %ld\n", clock());
delay_us();
printf("The end clock is: %ld\n", clock());
system("pause");
return 0;
}