首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >abort()和terminate()在哪里“活动”?

abort()和terminate()在哪里“活动”?
EN

Stack Overflow用户
提问于 2010-04-25 01:26:58
回答 3查看 2.9K关注 0票数 5

关于终止处理程序,

据我所知,当代码中发生不好的事情时,例如当我们没有捕捉到异常时,

terminate()被调用,而terminate()又调用abort()

set_terminate(my_function)允许我们使用terminate()来调用用户指定的函数my_terminate。

我的问题是:这些函数在哪里“活着”它们似乎不是语言的一部分,但它们的工作方式就像它们存在于每个单独的cpp文件中一样,而不必包括任何头文件。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-04-25 01:30:27

如果terminateabort的默认处理函数不是您自己安装的,那么它们必须位于您的编译器提供的运行时库中。

通常,每个程序都链接到运行时库(例如Linux下的glibc )。在其他原因中,这是因为运行时库包含用于基本内容的“隐藏”代码,例如在启动时调用main函数的代码。

票数 5
EN

Stack Overflow用户

发布于 2010-04-25 01:34:39

我不明白为什么您认为没有必要包括标题:

代码语言:javascript
运行
复制
int main() {
    abort();
}

为我提供以下错误:

代码语言:javascript
运行
复制
error: 'abort' was not declared in this scope

C和C++都没有任何“特殊”函数--如果你想使用一个函数,你必须以某种方式声明它。这两个位于C++标准库中,并在cstdlibexception中声明。当然,这些标头本身可能会被其他标头包含,从而使函数可用,但这并未在标准中指定。

票数 3
EN

Stack Overflow用户

发布于 2010-04-25 01:44:47

set_terminate -终止处理程序函数

将f设置为终止处理函数。

终止处理程序函数是在由于某种原因必须放弃异常处理过程时自动调用的函数。当抛出的异常或其他异常情况导致无法继续处理过程时,就会发生这种情况。

默认情况下,terminate处理程序调用cstdlib's abort函数

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2705439

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档