[英]How can I check OS version (Windows) with preprocessor directives?
我想知道是否有機會檢查我真正使用的Windows版本。 類似於: 如何使用預處理程序指令檢查操作系統? 。
我試過MSDN的代碼:
但是他們中的任何一個給了我很好的結果(例如:根據http://msdn.microsoft.com/en-us/library/windows/desktop/ms724832(v=vs.85).aspx我的代碼應該打印5.1時我在Windows XP上,但它顯示5 ...)
有沒有可靠的方法(我更喜歡預處理器指令的方式)來找出我正在使用的Windows?
我的代碼:
#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;
}
你實際上得到了正確的結果。 但是你只打印主要版本:
std::cout << osvi.dwMajorVersion << "\n";
而是嘗試使用:
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.