代码之家  ›  专栏  ›  技术社区  ›  aCuria

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

c++
  •  5
  • aCuria  · 技术社区  · 16 年前

    关于终止处理程序,

    调用terminate(),然后调用abort()

    set\u terminate(my\u函数)允许我们get terminate()调用用户指定的函数my\u terminate。

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

    3 回复  |  直到 16 年前
        1
  •  5
  •   stakx - no longer contributing Saravana Kumar    16 年前

    如果有默认的处理程序函数 terminate 和 abort

    通常,每个程序都与运行库相链接(例如。 glibc main 启动时运行。

        2
  •  3
  •   anon anon    16 年前

    int main() {
        abort();
    }
    

    error: 'abort' was not declared in this scope
    

    C和C++都没有任何“特殊”函数——如果你想使用函数,你必须以某种方式声明它。这两个都存在于C++标准库中,并在 cstdlib 和 exception . 当然,这些头本身可能会被其他头所包含,从而使函数可用,但这不是标准所规定的。

        3
  •  2
  •   Romain Hippeau    16 年前

    set_terminate -终止处理程序函数

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

    terminate handler函数是在由于某种原因必须放弃异常处理过程时自动调用的函数。当无法为抛出的异常找到处理程序时,或者在其他一些使处理过程无法继续的异常情况下,就会发生这种情况。

    默认情况下终止处理程序调用 cstdlib's abort