错误:范围中未声明"osver" [英] error: 'osver' was not declared in the scope
问题描述
// 在您的PC上获取操作系统版本
#include >< >
#include < iostream >
#include < dos.h >
#include < string.h >
使用 命名空间 std;
int main( void )
{
OSVERSIONINFO osver;
osver.dwOSVersionInfoSize = sizeof (osver);
如果(GetVersionEx(& osver))
{
如果(osver.dwPlatformId == VER_PLATFORM_WIN32s)
cout<< " ;
其他 如果(osver.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS)
{
如果(osver.dwMinorVersion == 0 &&&&(strchr(osver.szCSDVersion,' B')== NULL)&&(strchr(osver.szCSDVersion, C')== NULL))
cout<< " ;
其他 如果(osver.dwMinorVersion == 0 &&(strchr(osver.szCSDVersion,' B')!= NULL))
cout<< " ;
其他 如果(osver.dwMinorVersion == 0 &&(strchr(osver.szCSDVersion,' C')!= NULL))
cout<< " ;
其他 如果(osver.dwMinorVersion == 10 &&(strchr(osver.szCSDVersion,' A')== NULL))
cout<< " ;
其他 如果(osver.dwMinorVersion == 10 &&(strchr(osver.szCSDVersion,' A')!= NULL))
cout<< " ;
其他 如果(osver.dwMinorVersion == 90 )
cout<< " ;
其他
cout<< " ;
}
其他 如果(osver.dwPlatformId == VER_PLATFORM_WIN32_NT){
cout<< " ;
cout<< osver.dwMajorVersion<< " << osver.dwMinorVersion<< " << (osver.dwBuildNumber& 0xffff)<< osver.szCSDVersion<<恩德尔
}
其他
{
cout<< " <<恩德尔
}
}
系统(" );
返回 0 ;
}
错误如下:
错误:未在此范围内声明"osver"
错误:;"令牌之前的预期主表达式
任何帮助都将得到广泛应用
谢谢,
此代码使用Unicode集构建-
#include <windows.h> #include <iostream> #include <dos.h> #include <string.h> #include <iostream> using namespace std; int main(void) { OSVERSIONINFO osver; osver.dwOSVersionInfoSize = sizeof(osver); if (GetVersionEx(&osver)) { if (osver.dwPlatformId == VER_PLATFORM_WIN32s) cout <<"Win32 "; else if (osver.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS) { if (osver.dwMinorVersion == 0 && (wcschr(osver.szCSDVersion,''B'') == NULL) && (wcschr(osver.szCSDVersion,''C'') == NULL)) cout <<"Windows 95 "; else if (osver.dwMinorVersion == 0 && (wcschr(osver.szCSDVersion,''B'') != NULL)) cout <<"Windows 95 OSR 2 "; else if (osver.dwMinorVersion == 0 && (wcschr(osver.szCSDVersion,''C'') != NULL)) cout <<"Windows 95 OSR 2.5 "; else if (osver.dwMinorVersion == 10 && (wcschr(osver.szCSDVersion,''A'') == NULL)) cout <<"Windows 98 "; else if (osver.dwMinorVersion == 10 && (wcschr(osver.szCSDVersion,''A'') != NULL)) cout <<"Windows 98 Second Edition "; else if (osver.dwMinorVersion == 90) cout <<"Windows Millenium Edition "; else cout<<"Unknown Windows "; } else if (osver.dwPlatformId == VER_PLATFORM_WIN32_NT) cout <<"Windows NT "; cout <<osver.dwMajorVersion<<"."<<osver.dwMinorVersion<<"." <<(osver.dwBuildNumber & 0xffff)<<osver.szCSDVersion<<endl; } else { cout <<"Cannot gain version information."<<endl; } system("pause"); return 0; }
顺便说一句,如果它显示类似以下内容: Windows NT 6.1.7600002BFB08 ,则表示Windows 7(请参阅列表Windows版本的版本 [ ^ ])
这根本不是一个答案,而是一个小技巧.
选择操作系统版本(在您的代码中)而不是if
的更好方法是使用 ^ ]
开关(表达式) { 案例常量表达式: 陈述 跳跃陈述 [默认: 陈述 跳转陈述] }
有关更多信息,请访问: MSDN [// Get the OS version on your PC #include <windows.h> #include <iostream> #include <dos.h> #include <string.h> using namespace std; int main(void) { OSVERSIONINFO osver; osver.dwOSVersionInfoSize = sizeof(osver); if (GetVersionEx(&osver)) { if (osver.dwPlatformId == VER_PLATFORM_WIN32s) cout << "Win32 "; else if (osver.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS) { if (osver.dwMinorVersion == 0 && (strchr(osver.szCSDVersion,'B') == NULL) && (strchr(osver.szCSDVersion,'C') == NULL)) cout << "Windows 95 "; else if (osver.dwMinorVersion == 0 && (strchr(osver.szCSDVersion,'B') != NULL)) cout << "Windows 95 OSR 2 "; else if (osver.dwMinorVersion == 0 && (strchr(osver.szCSDVersion,'C') != NULL)) cout << "Windows 95 OSR 2.5 "; else if (osver.dwMinorVersion == 10 && (strchr(osver.szCSDVersion,'A') == NULL)) cout << "Windows 98 "; else if (osver.dwMinorVersion == 10 && (strchr(osver.szCSDVersion,'A') != NULL)) cout << "Windows 98 Second Edition "; else if (osver.dwMinorVersion == 90) cout << "Windows Millenium Edition "; else cout<<"Unknown Windows "; } else if (osver.dwPlatformId == VER_PLATFORM_WIN32_NT){ cout << "Windows NT "; cout << osver.dwMajorVersion << "." << osver.dwMinorVersion << "." << (osver.dwBuildNumber & 0xffff) << osver.szCSDVersion << endl; } else { cout << "Cannot gain version information." << endl; } } system("pause"); return 0; }
Here are the errors:
error: ''osver'' was not declared in this scope
error: expected primary-expression before '';'' token
Any Help will be much appriciated
Thank You,解决方案This code builds with Unicode set -
#include <windows.h> #include <iostream> #include <dos.h> #include <string.h> #include <iostream> using namespace std; int main(void) { OSVERSIONINFO osver; osver.dwOSVersionInfoSize = sizeof(osver); if (GetVersionEx(&osver)) { if (osver.dwPlatformId == VER_PLATFORM_WIN32s) cout <<"Win32 "; else if (osver.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS) { if (osver.dwMinorVersion == 0 && (wcschr(osver.szCSDVersion,''B'') == NULL) && (wcschr(osver.szCSDVersion,''C'') == NULL)) cout <<"Windows 95 "; else if (osver.dwMinorVersion == 0 && (wcschr(osver.szCSDVersion,''B'') != NULL)) cout <<"Windows 95 OSR 2 "; else if (osver.dwMinorVersion == 0 && (wcschr(osver.szCSDVersion,''C'') != NULL)) cout <<"Windows 95 OSR 2.5 "; else if (osver.dwMinorVersion == 10 && (wcschr(osver.szCSDVersion,''A'') == NULL)) cout <<"Windows 98 "; else if (osver.dwMinorVersion == 10 && (wcschr(osver.szCSDVersion,''A'') != NULL)) cout <<"Windows 98 Second Edition "; else if (osver.dwMinorVersion == 90) cout <<"Windows Millenium Edition "; else cout<<"Unknown Windows "; } else if (osver.dwPlatformId == VER_PLATFORM_WIN32_NT) cout <<"Windows NT "; cout <<osver.dwMajorVersion<<"."<<osver.dwMinorVersion<<"." <<(osver.dwBuildNumber & 0xffff)<<osver.szCSDVersion<<endl; } else { cout <<"Cannot gain version information."<<endl; } system("pause"); return 0; }
By the way, if it says something like: Windows NT 6.1.7600002BFB08, this means Windows 7 (see List of Microsoft Windows versions[^])
This is not an answer at all, but a little tip.
The better way to choose OS version (in your code), instead ofif
, is to use Switch command[^]
switch (expression) { case constant-expression: statement jump-statement [default: statement jump-statement] }
这篇关于错误:范围中未声明"osver"的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!