Can';是否让不同的编译器使用特定的头文件?

Can';是否让不同的编译器使用特定的头文件?,c,linux,c-preprocessor,C,Linux,C Preprocessor,我正在为大学写一个C项目,我想在头文件中使用Sleep()函数。标记它的人可能正在使用Linux,我正在为Windows开发VS2013。我发现Sleep()存在于两个不同的头文件中,这取决于编译器使用的是Windows还是Linux。我浏览了网页,找到了在预处理器中使用“#ifdef”的建议。然而,我对预处理器的工作还不熟悉,所以我不确定当有很多不同的建议时该用什么,我特别不确定这些建议是否与我的建议用途相同,所以如果这是一个常见问题,我深表歉意。我尝试了以下方法: #ifdef _WIN32

我正在为大学写一个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
#ifdef_WIN32 | | u WIN64
#包括
#埃利夫linux
#包括
#否则
#包括
#恩迪夫

这在VS2013中编译得很好,但是我在linux机器上遇到了
Sleep()
的错误,因此我使用的代码在VS2013之外似乎无法工作。有人能解释一下需要指定什么才能让Windows和Linux使用各自的头文件吗

Linux函数名为
sleep()
,小写,而Windows函数名为
sleep()
,大写字母S,C区分大小写。此外,Windows
Sleep()
以毫秒为参数,而Linux则以秒为参数

所以需要这样的东西:

#ifdef _WIN32 || _WIN64
#include<windows.h>
#define sleep(x) Sleep((x) * 1000)
#elif __linux
#include<unistd.h>
#else
#include<unistd.h>
#endif
#ifdef_WIN32 | | u WIN64
#包括
#定义睡眠(x)睡眠((x)*1000)
#埃利夫linux
#包括
#否则
#包括
#恩迪夫

或者,如果你愿意,你可以用另一种方法,但是你会有精度问题。(如果这是一个问题,请考虑使用
nanosleep()

Linux函数名为
sleep()
,小写,但Windows函数名为
sleep()
,大写字母s,C区分大小写。此外,Windows
Sleep()
以毫秒为参数,而Linux则以秒为参数

所以需要这样的东西:

#ifdef _WIN32 || _WIN64
#include<windows.h>
#define sleep(x) Sleep((x) * 1000)
#elif __linux
#include<unistd.h>
#else
#include<unistd.h>
#endif
#ifdef_WIN32 | | u WIN64
#包括
#定义睡眠(x)睡眠((x)*1000)
#埃利夫linux
#包括
#否则
#包括
#恩迪夫

或者,如果你愿意,你可以用另一种方法,但是你会有精度问题。(如果这是一个问题,请考虑使用
nanosleep()

Linux函数名为
sleep()
,小写,但Windows函数名为
sleep()
,大写字母s,C区分大小写。此外,Windows
Sleep()
以毫秒为参数,而Linux则以秒为参数

所以需要这样的东西:

#ifdef _WIN32 || _WIN64
#include<windows.h>
#define sleep(x) Sleep((x) * 1000)
#elif __linux
#include<unistd.h>
#else
#include<unistd.h>
#endif
#ifdef_WIN32 | | u WIN64
#包括
#定义睡眠(x)睡眠((x)*1000)
#埃利夫linux
#包括
#否则
#包括
#恩迪夫

或者,如果你愿意,你可以用另一种方法,但是你会有精度问题。(如果这是一个问题,请考虑使用
nanosleep()

Linux函数名为
sleep()
,小写,但Windows函数名为
sleep()
,大写字母s,C区分大小写。此外,Windows
Sleep()
以毫秒为参数,而Linux则以秒为参数

所以需要这样的东西:

#ifdef _WIN32 || _WIN64
#include<windows.h>
#define sleep(x) Sleep((x) * 1000)
#elif __linux
#include<unistd.h>
#else
#include<unistd.h>
#endif
#ifdef_WIN32 | | u WIN64
#包括
#定义睡眠(x)睡眠((x)*1000)
#埃利夫linux
#包括
#否则
#包括
#恩迪夫

或者,如果你愿意,你可以用另一种方法,但是你会有精度问题。(如果有问题,请考虑使用
nanosleep()

sleep()已定义,但我不认为sleep()已定义(在linux上)…请注意,windows sleep以毫秒为参数,而unistd one以秒为参数。sleep()已定义,但我不认为sleep()已定义(在linux上)…请注意windows Sleep以毫秒为参数,而unistd one以秒为参数。已定义Sleep(),但我不认为已定义Sleep()(在linux上)…请注意windows Sleep以毫秒为参数,而unistd one以秒为参数。已定义Sleep(),但我不认为已定义Sleep()(在linux上)…注意windows Sleep以毫秒为参数,而unistd one以秒为参数。谢谢你的建议,正如我说的,我不使用Linux,所以我不知道unistd.h版本的格式,但我明天会在Linux系统上测试,然后回答这个问题。谢谢你的建议,正如我所说的我不使用Linux,所以我不知道unistd.h版本的格式,但我明天会在Linux系统上测试这个,然后回答这个问题。谢谢你的建议,正如我说的,我不使用Linux,所以我不知道unistd.h版本的格式,但我明天会在Linux系统上测试这个,然后回答这个问题这个问题。谢谢你的建议,因为我说过我不使用Linux,所以我不知道unistd.h版本的格式,但是我明天会在Linux系统上测试这个问题,然后回答这个问题。