跳过一些代码并退出程序

时间:2016-09-05 05:56:53

标签: c++

我有一个简单的问题。我怎样才能做到这一点 打印Hello world,然后转到'anotherMessage',然后在该函数中打印消息,然后跳过下一个cout“Dont print this”并退出,

另外,如果我交换函数但保持语句相同,我将如何退出程序

//! \brief Returns a valid N
//! \param n a value to determine a valid N
//! \returns a valid N
constexpr static size_t GetValidN(size_t n)
{
    return DEF_N;
}

3 个答案:

答案 0 :(得分:2)

正如πάνταῥεῖ所指出,您可以在exit(0)定义的末尾使用anotherMessage()

exit(0)表示程序终止成功&它是完全便携的,而

exit(1)(通常)表示不成功终止。但是,它的使用是不可移植的。

如果您正在编写一个可能最终存在于库中的函数,那么从一般情况下调用exit是不好的做法:向调用代码发出错误信号要好得多(通过特定的返回值或异常)例如)让调用代码决定做什么。 (有些情况下,它完全有效。例如,如果您正在编写一个名为quit_if_file_not_found的函数,那么,您的用户期望终止。)

在您的情况下,您的解析函数可能不应该调用exit:例如,您可能希望在将来的某个时候,如果解析第一个文件名失败,您的主代码会要求用户输入不同的文件名。如果解析例程终止程序,则必须修改主代码和该函数。如果它已发出错误信号,则只需修改main中的逻辑。

(并且不要只是在没有打印错误消息的情况下退出或者记录类似于上面所做的事情,这将使那些无法知道如何解决代码遇到的问题的沮丧用户。)

答案 1 :(得分:1)

您可以将anotherMessage()函数的类型定义为int,返回一个整数值(以下代码中为1)。检查返回值是否为1,如果是,则通过调用exit(0)退出程序。

void main()
{
cout << "Hello World";
int val = anotherMessage();
if(val) exit(0);
cout << "Dont print this";
}
int anotherMessage()
{
cout << "Print this";
return 1;
}

答案 2 :(得分:0)

单个exit()语句立即关闭您的代码,但不是所需的语句。

当你的函数返回像这样的bool时,你可以使用if语句。

bool func();

func(){
// Do Stuff
return  // true or false
}

void main(){
    if(func()){
        // Do Stuff
    }else{
        //Do other Stuff
}
}
相关问题