gpt4 book ai didi

c++ - 如何使用预处理器指令检查操作系统版本 (Windows)?

转载 作者:太空宇宙 更新时间:2023-11-04 08:55:12 24 4
gpt4 key购买 nike

我想知道是否有机会检查我真正使用的是哪个 Windows 版本。类似于:How do I check OS with a preprocessor directive? .

我尝试了来自 MSDN 的代码:

  1. http://msdn.microsoft.com/en-us/library/windows/desktop/ms724451(v=vs.85).aspx
  2. http://msdn.microsoft.com/en-us/library/windows/desktop/ms724439(v=vs.85).aspx

但是它们中的任何一个都给了我很好的结果(例如:根据 http://msdn.microsoft.com/en-us/library/windows/desktop/ms724832(v=vs.85).aspx 当我在 Windows XP 上时我的代码应该打印 5.1 但它显示 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;
}

关于c++ - 如何使用预处理器指令检查操作系统版本 (Windows)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17514019/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com