我如何检测操作系统是否是C ++ / C中的Windows?
谢谢
#ifdef _WIN32 cout << "This is Windows." << endl; #endif
这将允许您只为Windows定义块。 只要预处理器宏被定义。
这是编译时的事情,而不是运行时的事情。
使用
getenv("windir");
如果你得到NULL,那么它不是Windows。
由于%windir%只能在windows系统上定义,所以这是有效的。 这当然是一个廉价和肮脏的黑客攻击。
你不应该这样做。 您应该分别编译每个平台,因此您应该已经知道该平台是否为任何给定的二进制文件的窗口。
基本上,在运行时检查操作系统是没有用的,所以这样做的可能性是一个有争议的问题。
为了帮助您回想未来C ++如何在不同的平台上进行编译,请记住“只编写一次,随时编译”。
我建议设置一个编译时间标志,导致编译的行为有所不同,具体取决于你是否编译windows。
如果是运行时,可能是指Wine(在非Windows操作系统上)。 如果没有,那显然是不可能的。 Windows二进制文件无法在其他操作系统中运行(除非它们具有Wine)。
如果是编译时,可能重复: 是否有任何宏来确定我的代码是否正在编译到Windows?
(见上面接受的答案)