用C ++检测Windows操作系统

时间:2010-12-06 05:36:44

标签: c++ windows

如何在C ++ / C中检测操作系统是否为Windows?

由于

4 个答案:

答案 0 :(得分:24)

#ifdef _WIN32
cout << "This is Windows." << endl;
#endif

这将允许您仅为Windows定义块。只要定义了预处理器宏。

这是编译时的事情,而不是运行时的事情。

答案 1 :(得分:3)

您可以像这样使用 cstdlib 中的getenv()

#include <cstdlib>

getenv("windir");

如果你得到NULL那么它不是窗户。

这是有效的,因为%windir%只应在Windows系统上定义。当然,这是一个廉价而肮脏的黑客。

http://www.cplusplus.com/reference/clibrary/cstdlib/getenv/

答案 2 :(得分:1)

你不应该这样做。您应该分别为每个平台进行编译,因此您应该已经知道该平台是否是任何给定二进制文件的窗口。

基本上,在运行时检查操作系统是没用的,所以这样做的可能性是没有用的。

为了帮助您回想起C ++在不同平台上编译的工作方式,请记住“write once, compile anywhere”这一短语。


我建议设置一个编译时标志,使得编译的行为会有所不同,具体取决于你是否正在为windows编译。

答案 3 :(得分:0)

如果是运行时,则可能是指Wine(在非Windows操作系统上)。如果没有,那显然是不可能的。 Windows二进制文件无法在其他操作系统中运行(除非它们具有Wine)。

如果是编译时间,可能重复:Are there any macros to determine if my code is being compiled to Windows?

(见上面接受的答案)