2024-07-13 07:00:00

如何结束c++代码

我想我的c++代码停止运行,如果某个条件得到满足,但我不知道如何做到这一点。因此,在任何时候,如果if语句为真,就像这样终止代码:

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

当前回答

超出调用exit(error_code)——调用退出处理程序,但不调用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 所有原本放东西的地方 例如,原来的main被重命名为secondary_main,上面的存根main被添加。 这只是一个细节,这样在main中的tray和catch之间就不会有太多的代码。

如果需要,可以捕获其他异常类型。 我很喜欢捕捉字符串错误类型,比如std::string或char*,然后打印出来 在main中的catch处理程序中。

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

总的来说,C错误处理-退出和信号-和c++错误处理-尝试/捕获/抛出异常-在最好的情况下不一致地一起发挥作用。

然后,检测到错误

throw "error message"

或者一些更特定的异常类型。

其他回答

如果我正在测试的情况确实是坏消息,我会这样做:

*(int*) NULL= 0;

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

正如Martin York提到的,退出不像返回那样执行必要的清理。

在exit的地方使用return总是更好。 如果你不在主程序中,无论你想退出程序的哪个位置,请先返回主程序。

考虑下面的例子。 使用下面的程序,将用所提到的内容创建一个文件。 但是如果return是带注释的&未注释的exit(0),编译器不会保证文件将有所需的文本。

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

不仅如此,在程序中有多个退出点会使调试更加困难。 仅在可以对其进行合理解释时使用exit。

打破一个条件使用return(0);

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

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

超出调用exit(error_code)——调用退出处理程序,但不调用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 所有原本放东西的地方 例如,原来的main被重命名为secondary_main,上面的存根main被添加。 这只是一个细节,这样在main中的tray和catch之间就不会有太多的代码。

如果需要,可以捕获其他异常类型。 我很喜欢捕捉字符串错误类型,比如std::string或char*,然后打印出来 在main中的catch处理程序中。

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

总的来说,C错误处理-退出和信号-和c++错误处理-尝试/捕获/抛出异常-在最好的情况下不一致地一起发挥作用。

然后,检测到错误

throw "error message"

或者一些更特定的异常类型。

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

 break; 

如果你想转义一些代码并继续循环使用:

继续;

如果你的If语句不在循环中,你可以使用:

 return 0;

Or 




  exit();