错误:范围中未声明"osver" [英] error: 'osver' was not declared in the scope

查看:95
本文介绍了错误:范围中未声明"osver"的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

 // 在您的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 of if, is to use Switch command[^]

switch (expression)
{
   case constant-expression:
      statement
      jump-statement
   [default:
      statement
      jump-statement]
}



More at: MSDN[^]


这篇关于错误:范围中未声明"osver"的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆