什么库是error()函数?

时间:2016-08-25 05:30:12

标签: c++

我尝试在程序中使用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)。   这种方法足以满足大多数学生的课程需求,并且是一个例子   一种可用于更复杂错误处理的样式。

6 个答案:

答案 0 :(得分:2)

在你的书中

  

支持

     

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

     
      
  • 基于本书的讲座幻灯片
  •   
  • 教师指南
  •   
  • 本书中使用的标题苍蝇和库的实现
  •   
  • 本书中的示例代码
  •   
  • 选定练习的解决方案
  •   
  • 潜在有用的链接
  •   
  • 勘误表总是欢迎提出改进建议。
  •   

后来在第一章结束时:

  

所以,这是你的第一次演习:

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

    [...]

         

    你如何找到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);
}