我尝试在程序中使用error()函数,但它显示“Error:identifier”错误“未定义”。我需要包含一个库吗? 这可以从一本名为“使用C ++编程原理和实践”的书中找到。 error()函数将使用系统错误消息以及作为参数传递给error()的字符串来终止程序。
if (x<=0) error("non-positive x");
if (y<=0) error("non-positive y");
int area1 = area(x,y);
真的,唯一的问题是如果我们该怎么做 发现错误。在这里,我们假设了一个函数error() 会做一些明智的事情。实际上,在std_lib_facilities.h中我们供应 一个error()函数,默认情况下用a终止程序 系统错误消息加上我们作为参数传递的字符串 错误()。如果您希望写出自己的错误消息或采取 其他动作,你捕获runtime_error(§5.6.2,§7.3,§7.8,§B.2.1)。 这种方法足以满足大多数学生的课程需求,并且是一个例子 一种可用于更复杂错误处理的样式。
答案 0 :(得分:2)
在你的书中
支持
本书的支持网站http://www.stroustrup.com/Programming包含各种支持本书编程教学和学习的资料。材料可能会随着时间的推移而改善,但对于初学者,你可以找到:
- 基于本书的讲座幻灯片
- 教师指南
- 本书中使用的标题苍蝇和库的实现
- 本书中的示例代码
- 选定练习的解决方案
- 潜在有用的链接
- 勘误表总是欢迎提出改进建议。
后来在第一章结束时:
所以,这是你的第一次演习:
- 转到附录C并按照设置项目所需的步骤操作。设置一个名为hello_ world的空控制台C ++项目。
醇>[...]
你如何找到std_lib_facilities.h?如果你在课程中,请问你的 讲师。如果没有,请从我们的支持网站下载 http://www.stroustrup.com/Programming
答案 1 :(得分:2)
这是一个用户定义的功能。如果您查看5.6.3节“输入错误”,您可以看到,他将其定义为:
void error (string s)
{
throw runtime_error (s);
}
他在文本中进一步重新定义它以接受两个论点。
答案 2 :(得分:0)
函数error()
不是标准的API调用。我怀疑你的书要么是在谈论提供这个功能的库,要么是它包含了一个实现这个功能的库。
对于C ++中的错误处理,您可以使用perror()
C API调用,但最好的解决方案是为任务使用基于异常的面向对象的解决方案。
答案 3 :(得分:0)
void error(std::string error_type)
{
std::cout << error_type << '\n';
}
答案 4 :(得分:0)
最可能的答案是https://linux.die.net/man/3/error,它是GNU扩展(也是GNU libc的一部分)。
答案 5 :(得分:0)
您可以使用 perror() 代替 error()。 您可以在 cstdio 库中找到 perror() 函数 例如:
int n;
cin >> n;
if(n<0) {
perror("negative input is not allowed");
}else {
cout << sqrt(n);
}