[英]How can I check OS version (Windows) with preprocessor directives?
I would like to know if there is any chance to check which Windows version I really use. 我想知道是否有机会检查我真正使用的Windows版本。 Something similar to: How do I check OS with a preprocessor directive?
类似于: 如何使用预处理程序指令检查操作系统? .
。
I tried code from MSDN: 我试过MSDN的代码:
But any of them gave me good results (for example: according to http://msdn.microsoft.com/en-us/library/windows/desktop/ms724832(v=vs.85).aspx my code should print 5.1 when Im on Windows XP but it showed 5 ...) 但是他们中的任何一个给了我很好的结果(例如:根据http://msdn.microsoft.com/en-us/library/windows/desktop/ms724832(v=vs.85).aspx我的代码应该打印5.1时我在Windows XP上,但它显示5 ...)
Is there any reliable way (I would prefer preprocessor directives way) to find out which Windows I'm using? 有没有可靠的方法(我更喜欢预处理器指令的方式)来找出我正在使用的Windows?
My code: 我的代码:
#include <windows.h>
#include <iostream>
int main()
{
OSVERSIONINFO osvi;
BOOL bIsWindowsXPorLater;
ZeroMemory(&osvi, sizeof(OSVERSIONINFO));
osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
GetVersionEx(&osvi);
// I HAD THIS, AND IT WAS WRONG! :<
std::cout << osvi.dwMajorVersion << "\n";
// CHANGED THE ABOVE LINE TO THE LINE BELOW AND IT IS OK NOW :D
std::cout << osvi.dwMajorVersion << "." << osvi.dwMinorVersion << "\n";
return 0;
}
You are actually getting the right result. 你实际上得到了正确的结果。 But you are only printing the major version:
但是你只打印主要版本:
std::cout << osvi.dwMajorVersion << "\n";
Instead try using: 而是尝试使用:
if (osvi.dwMinorVersion >= 1) {
std::cout << osvi.dwMajorVersion << "." << osvi.dwMinorVersion << std::endl;
} else {
std::cout << osvi.dwMajorVersion << std::endl;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.