【发布时间】:2014-02-07 14:35:45
【问题描述】:
我正在为大学写一个 C 项目,我想在我的头文件中使用Sleep() 函数。标记它的人可能正在使用 Linux,我正在为 Windows 开发 VS2013。我发现 Sleep() 存在于两个不同的头文件中,具体取决于编译器是使用 Windows 还是 Linux,我查看了网络并找到了在预处理器中使用 "#ifdef" 的建议。但是我是预处理器工作的新手,所以当有很多不同的建议时我不确定该使用什么,我特别不确定这些建议是否与我的目的相同,所以如果这是一个常见的问题,我深表歉意问题。我尝试了以下方法:
#ifdef _WIN32 || _WIN64
#include<windows.h>
#elif __linux
#include<unistd.h>
#else
#include<unistd.h>
#endif
这在 VS2013 中编译得很好,但我在 linux 机器上遇到Sleep() 的错误,所以我使用的代码似乎在 VS2013 之外无法工作。有人能解释一下为了让 Windows 和 Linux 使用它们各自的头文件需要指定什么吗?
【问题讨论】:
-
sleep() 已定义,但我不认为 Sleep() 已定义(在 linux 上)..
-
注意 windows Sleep 需要毫秒作为参数,而 unistd 需要秒作为参数。
标签: c linux c-preprocessor