未定义的“睡眠”参考,但我确实包括<unistd.h> </unistd.h>

时间:2012-01-06 20:49:14

标签: c windows winapi sleep

嗯,这一定是个傻瓜。下面是C中不可能更简单的代码。它不能编译说“未定义的睡眠引用”。但我认为我包含了我需要的所有系统标题......

#include <stdio.h>
#include <unistd.h>
int main()
{
    printf("Test starts.\n");
    sleep(1);
    printf("Test ends.\n");

    return 1;
}

2 个答案:

答案 0 :(得分:35)

在顶部试试这个:

#ifdef __unix__
# include <unistd.h>
#elif defined _WIN32
# include <windows.h>
#define sleep(x) Sleep(1000 * (x))
#endif

此代码允许您使用相同名称下的两个不同功能,这些功能完全相同。它在不同平台下编译。

此外,对(x)参数加括号可确保延迟正确,即使有人像这样调用它sleep(10+10)

答案 1 :(得分:1)

如果您在Windows操作系统下运行,请在程序中加入windows.h标头文件,并将sleep()更改为Sleep()

问题会消失。

我希望这会有所帮助。