error()函数在哪个库中?

What library is the error() function in?

本文关键字:函数 error      更新时间:2023-10-16

我尝试在我的程序中使用error()函数,但它显示"错误:标识符"错误"未定义"。我需要包括一个库吗?这是从一本名为《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()函数,默认情况下使用系统错误消息加上作为参数传递给的字符串错误()。如果您喜欢编写自己的错误消息或采取其他操作,捕获runtime_error(§5.6.2,§7.3,§7.8,§B.2.1)。这种方法适用于大多数学生项目,是一个例子一种可用于更复杂的错误处理的样式。

这是一个用户定义的函数。如果你看一下第5.6.3节"错误的输入",你可以看到,他将其定义为:

void error (string s)
{
  throw runtime_error (s);
}

他在文本中进一步重新定义它以接受两个参数

在你的书

的支持

本书的支持网站http://www.stroustrup.com/Programming包含各种支持使用本书进行编程教学的材料。材料可能会随着时间的推移而改进,但对于初学者,您可以找到:

  • 基于
  • 书的讲座幻灯片
  • 教师指南
  • 头文件和书中使用的库的实现
  • 书中的示例代码
  • 选定练习的解决方案
  • 潜在有用链接
  • 欢迎提出改进建议。

然后在第一章末尾:

那么,这是你的第一个练习:

  1. 转到附录C并按照所需的步骤设置项目。设置一个空的控制台c++项目hello_ world。

[…)

如何找到std_lib_facilities.h?如果你正在上课,问你的老师讲师。如果没有,请从我们的支持网站下载http://www.stroustrup.com/Programming。

最有可能的答案是https://linux.die.net/man/3/error,一个GNU扩展(也是GNU libc的一部分)。

函数error()不是一个标准的API调用。我怀疑你的书要么是在谈论一个提供这个函数的库,要么是它自己包含了一个实现这个函数的库。

对于c++中的错误处理,您可以使用perror() C API调用,但最好的解决方案是使用基于异常的面向对象解决方案。

void error(std::string error_type)
{
    std::cout << error_type << 'n';
}

可以使用perror()代替error()。您可以在cstdio库中找到perror()函数例如:

  int n;
 cin >> n;
  if(n<0) {
 perror("negative input is not allowed");
 }else {
     cout << sqrt(n);
}