如何结束C ++代码

时间:2015-05-15 03:12:41

标签: c++

如果满足某个条件,我希望我的C ++代码停止运行,但我不知道该怎么做。因此,只要if语句为真,就可以在任何时候终止代码:

if (x==1)
{
    kill code;
}

13 个答案:

答案 0 :(得分:57)

正如马丁·约克所提到的那样,退出并没有像返回那样进行必要的清理。

在出口处使用返回总是更好。 如果您不在主要地方,无论您想要退出该计划,请先返回主页。

考虑下面的例子。 使用以下程序,将使用提及的内容创建文件。 但如果回复被评论&如果没有注释exit(0),编译器不会向您保证该文件将具有所需的文本。

int main()
{
    ofstream os("out.txt");
    os << "Hello, Can you see me!\n";
    return(0);
    //exit(0);
}

不仅仅是这样,在程序中有多个退出点会使调试更难。 只有在可以证明其合理性时才使用exit。

答案 1 :(得分:37)

调用std::exit功能。

答案 2 :(得分:23)

人们说“呼叫退出(返回代码)”,但这是不好的形式。在小程序中它很好,但是有很多问题:

  1. 您最终会从程序中获得多个退出点
  2. 它使代码更复杂(如使用goto)
  3. 无法释放在运行时分配的内存
  4. 真的,唯一一次你应该退出问题的是main.cpp中的这一行:

    return 0;
    

    如果使用exit()来处理错误,则应该了解异常(和嵌套异常),这是一种更优雅,更安全的方法。

答案 3 :(得分:14)

return 0;int main()范围内将其放在任何位置,程序将立即关闭。

答案 4 :(得分:11)

main返回值或使用exit功能。两者都采取int。除非您有外部流程监视返回值,否则返回的值并不重要。

答案 5 :(得分:11)

当执行流程到达主函数结束时,程序将终止。

要在此之前终止它,可以使用exit(int status)函数,其中status是返回到启动程序的任何值的值。 0通常表示非错误状态

答案 6 :(得分:11)

如果代码中某处有错误,则抛出异常或设置错误代码。抛出异常而不是设置错误代码总是更好。

答案 7 :(得分:9)

通常,您会将exit()方法与适当的exit status一起使用。

零意味着成功运行。非零状态表示发生了某种问题。父进程(例如shell脚本)使用此退出代码来确定进程是否已成功运行。

答案 8 :(得分:7)

超出调用exit(error_code) - 调用atexit处理程序,但不调用RAII析构函数等。 - 我越来越多地使用例外。

我的主程序越来越像

int main(int argc, char** argv) 
{
    try {
        exit( secondary_main(argc, argv );
    }
    catch(...) {
        // optionally, print something like "unexpected or unknown exception caught by main"
        exit(1);
    }
}

其中secondary_main 在最初放置所有东西的地方 - 即原始主服务器重命名为secondary_main,并添加上面的存根主服务器。 这只是一个非常好的,因此托盘和主要托盘之间的代码不会太多。

如果需要,请捕捉其他异常类型 我非常喜欢捕获字符串错误类型,如std :: string或char *,并打印它们 在main中的catch处理程序中。

使用这样的异常至少允许调用RAII析构函数,以便它们可以进行清理。这可能是愉快和有用的。

总体而言,C错误处理 - 退出和信号 - 以及C ++错误处理 - 尝试/捕获/抛出异常 - 最多不一致地一起玩。

然后,您在哪里检测到错误

throw "error message"

或更具体的异常类型。

答案 9 :(得分:-1)

如果你的if语句在循环中你可以使用

 break; 

如果你想逃避一些代码&amp;继续循环使用:

继续;

如果您的if语句不在循环中您可以使用:

 return 0;

Or 




  exit();

答案 10 :(得分:-1)

要破坏条件,请使用return(0);

所以,在你的情况下,它将是:

    if(x==1)
    {
        return 0;
    }

答案 11 :(得分:-2)

Dude ... exit()函数在stdlib.h下定义

所以你需要添加一个预处理器。

include stdlib.h放入标题部分

然后在任何你喜欢的地方使用exit();,但记得在退出的括号中加上一个整数。

例如:

exit(0);

答案 12 :(得分:-2)

如果我测试的条件真的是坏消息,我这样做:

*(int*) NULL= 0;

这给了我一个很好的coredump,我可以从中检查情况。