如何在C ++ / C中检测操作系统是否为Windows?
由于
答案 0 :(得分:24)
#ifdef _WIN32
cout << "This is Windows." << endl;
#endif
这将允许您仅为Windows定义块。只要定义了预处理器宏。
这是编译时的事情,而不是运行时的事情。
答案 1 :(得分:3)
您可以像这样使用 cstdlib 中的getenv()
:
#include <cstdlib>
getenv("windir");
如果你得到NULL
那么它不是窗户。
这是有效的,因为%windir%
只应在Windows系统上定义。当然,这是一个廉价而肮脏的黑客。
答案 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?
(见上面接受的答案)