C++ 如何使用预处理器指令检查操作系统版本(Windows)?
我想知道是否有机会检查我真正使用的Windows版本。类似于: 我尝试了MSDN中的代码: 但是他们中的任何一个都给了我很好的结果(例如:根据我的代码,当我在WindowsXP上即时通讯时,应该打印5.1,但它显示了5…) 有没有可靠的方法(我更喜欢预处理器指令的方法)来找出我使用的窗口 我的代码:C++ 如何使用预处理器指令检查操作系统版本(Windows)?,c++,c,operating-system,c-preprocessor,preprocessor-directive,C++,C,Operating System,C Preprocessor,Preprocessor Directive,我想知道是否有机会检查我真正使用的Windows版本。类似于: 我尝试了MSDN中的代码: 但是他们中的任何一个都给了我很好的结果(例如:根据我的代码,当我在WindowsXP上即时通讯时,应该打印5.1,但它显示了5…) 有没有可靠的方法(我更喜欢预处理器指令的方法)来找出我使用的窗口 我的代码: #include <windows.h> #include <iostream> int main() { OSVERSIONINFO osvi; BO
#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;
}
#包括
#包括
int main()
{
OSVERSIONINFO osvi;
布尔比斯波拉特;
零内存(&osvi,sizeof(OSVERSIONINFO));
osvi.dwOSVersionInfoSize=sizeof(OSVERSIONINFO);
GetVersionEx(&osvi);
//我有这个,但它错了<
std::cout您实际上得到了正确的结果。但您只打印了主要版本:
std::cout << osvi.dwMajorVersion << "\n";
std::cout使用预处理器指令设置有点困难。当您需要更新的功能时,您必须告诉标题是有原因的。@克里斯:好的,没有预处理器指令-可能吗?我只能说GetVersion
之类的东西。我不确定您为什么会得到错误的答案。@mazix您怎么打电话来GetVersionEx函数?您只输出主要版本部分。
if (osvi.dwMinorVersion >= 1) {
std::cout << osvi.dwMajorVersion << "." << osvi.dwMinorVersion << std::endl;
} else {
std::cout << osvi.dwMajorVersion << std::endl;
}