runtime_error未定义!怎么解决?

哈利_蜘蛛侠 2013-10-06 04:18:42
按照《C++ Primer》上面的例子,在VS 2008里进行编译,可是编译的时候提示错误,就是
runtime_error identifier not found
这个是什么情况?

//
#include <iostream>
#include <stdexcept>
using std::cin;
using std::cout;
using std::endl;
void keep_window_open();

int main()
{
int dividend=1, divisor=1;
cout<<"\nInput the dividend:\t";
cin>>dividend;

cout<<"\nInput the divisor:\t";
cin>>divisor;
if(divisor <=0)
throw runtime_error("\nNo! The divisor must be a positive number!\n");

keep_window_open();
}

void keep_window_open()
{
cout << "\nPress any key to exit:";
getchar();
}


难道是编译器的问题?不会这么坑吧?
...全文
960 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
booirror 2013-10-07
  • 打赏
  • 举报
回复
用std::runtime_error 替换runtime_error
哈利_蜘蛛侠 2013-10-07
  • 打赏
  • 举报
回复
哈哈哈,终于搞定啦!确实如4楼所言哦!下面是我编的一个无聊的小程序:

//
#include <iostream>

using std::cin;
using std::cout;
using std::endl;
using std::runtime_error;

void keep_window_open();

int main()
{
	int dividend=1, divisor=1;
	int result=1;
	char decide1 = 'y', decide2 = 'y';
	
	while(decide1 == 'y')
	{
		cout<<"\nInput the dividend:\t";
		cin>>dividend;
		try
		{
			if(dividend<0)
			{
				throw runtime_error("For convenience, please make sure dividend is non-negative!\n");

			}
			decide1 = 'n';
		
			while(decide2 == 'y')
			{
				cout<<"\nInput the divisor:\t";
				cin>>divisor;
				try
				{
					if(divisor<=0)
						throw runtime_error("For convenience, divisor must be positive!\n");
					decide2 = 'n';
					result = dividend/divisor;
				}catch(runtime_error err)
				{
					cout << err.what()
						 << "\n Try Once More? Enter y or n "<<endl;
					cin >>decide2;
				}
			}
		}catch(runtime_error err)
			{
				cout << err.what()
					 << "\n Try Again? Enter y or n" << endl;
				cin >>decide1;
			}
	}

	cout <<"\nSo the quotient of "<<dividend<<" divided by "<<divisor<<" is:\t"<<result<<endl;

	keep_window_open();
}

void keep_window_open()
{
	cout << "\nPress any key to exit:";
	getchar();
}
stereoMatching 2013-10-07
  • 打赏
  • 举报
回复
引用 3 楼 u011873969 的回复:
[quote=引用 1 楼 stereoMatching 的回复:]
#include<cstdio>
另外,你可以用

std::cin.get();
取代

getchar();
不行哦,报错还是一样的。[/quote] 没注意到你有throw 加个try{}catch{}吧
SmallCoder1992 2013-10-06
  • 打赏
  • 举报
回复

你这个是有问题的,你在抛出异常之后不进行处理吗??你需要进行try - catch,不然程序会出现无法对throw进行处理的
stereoMatching 2013-10-06
  • 打赏
  • 举报
回复
#include<cstdio>
另外,你可以用

std::cin.get();
取代

getchar();
FancyMouse 2013-10-06
  • 打赏
  • 举报
回复
std::runtime_error
哈利_蜘蛛侠 2013-10-06
  • 打赏
  • 举报
回复
引用 1 楼 stereoMatching 的回复:
#include<cstdio>
另外,你可以用

std::cin.get();
取代

getchar();
不行哦,报错还是一样的。
下载代码方式:https://pan.quark.cn/s/d5321a99c521 在信息技术网络架构领域,配置双块网卡于同一网络段内的静态路由是一项高级且具有实用价值的技术,其能够高效地管理和优化网络数据流,保障数据包能够沿最优路径传送,同时合理分配与控制内外网络资源的访问。本资料将详细阐述双块网卡同网络段静态路由的核心概念、配置机制及其应用实例。 ### 双块网卡同网络段静态路由概述 双块网卡同网络段静态路由指的是在一台主机上部署两个或更多网络接口卡(NICs),这些网卡可能接入同一个物理网络或不同的物理网络,但它们的IP地址归属于同一个网络段。在这种配置下,主机能够同时作为多个子网的成员,并通过静态路由表来引导数据包的传输路径。静态路由是由网络管理者手动设定的,它不依赖于动态路由协议,因而具备更高的稳定性和安全性。 ### 配置机制 在双块网卡同网络段静态路由的应用场景中,关键环节在于为各个网卡设定正确的默认网关与子网掩码,以及确立通往特定目标网络的静态路由条目。具体而言,每块网卡都必须拥有独立的IP地址和子网掩码,而默认网关则用于转发那些需要进入外部网络的数据包。此外,通过增设静态路由条目,可以明确指定某些特定目的地址的数据包应经由哪块网卡进行发送。 ### 实际操作流程 以下是从相关内容中总结出的实际操作流程: 1. **环境初始化**:确认两块网卡已正确安装,并配置了相应的IP地址与子网掩码。例如,一块网卡的IP地址为192.168.1.200,另一块为192.168.1.219,均属于192.168.1.0/24网络段。 2. **删除现有路由**:运用`routedelete 0.0.0.0`指令移除所有默认路由,以确保后续配置不会受到干扰。...

65,213

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧