error()函数在哪个库中?
What library is the error() function in?
我尝试在我的程序中使用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包含各种支持使用本书进行编程教学的材料。材料可能会随着时间的推移而改进,但对于初学者,您可以找到:
- 基于
书的讲座幻灯片- 教师指南
- 头文件和书中使用的库的实现
书中的示例代码- 选定练习的解决方案
- 潜在有用链接
欢迎提出改进建议。
然后在第一章末尾:
那么,这是你的第一个练习:
- 转到附录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);
}
相关文章:
- "error: no matching function for call to"构造函数错误
- error dllimport 函数的定义不允许在一个特定的联合中,而其他类、结构和联合将按预期导出
- VS2017 #error: : snprintf 的宏定义与标准库函数声明冲突
- MSVC:带函数的"error C2244: unable to match function definition to an existing declaration"是指专用模板类的类型别名
- 仅当链接函数 C++ 时,才会发生"Expression must have class type error"
- C++中的友元函数显示"variable or feild declared void error"
- 模板成员函数调用 -- "error: expected primary-expression before 'int'"
- std::vector for_each error C3867函数调用缺少参数列表
- 从C++调用 lua 函数时"Error in error handling"
- 类标头和在我的类.cpp文件中使用构造函数:"error: class 'Test' does not have any field named 'counter'"
- c++/error:对的调用没有匹配的函数
- source.cpp:LINE:COL: error:这里不允许定义函数
- 称为error的单例析构函数
- 对类构造函数的不可解释调用会生成"matching function error"
- 将指针传递给构造函数时,调用Error没有匹配的函数
- 使用c++和函数_main中引用的[ERROR]未解析的外部符号_mysql_error@4连接mysql
- 'error ()' c++ 中的函数不适用于 Visual Studio 2015
- C++:"error C4430: missing type specifier - int assumed" 对于构造函数和无效声明
- error()函数在哪个库中?
- 用error初始化构造函数中的成员