C ++能够在任何给定时间退出函数

时间:2015-10-29 06:02:18

标签: c++ visual-studio function visual-c++ return

这个例子是一个非常基本和简单的程序。

我希望能够在用户想要的时候退出函数。

在add()函数中,我可以退出

cin>>NumA;

键入9999行,它将返回菜单。但是我只能在这一点退出,所以如果我想在任何时候退出我必须添加

if (NumA == 9999)
{
    return;
} 

通过所有程序。我希望能够在函数内部随时退出,如果可以通过按键(如退格键)来完成,则更好。 我想有更好的方法来实现这个,我该怎么做?也许是另一个功能:^)

void add()
{
cout << "Addition" << endl;
cout << "Number A: ";
int NumA;
cin>>NumA;
if (NumA == 9999)
{
    return;
}
cout << "Number B: ";
int NumB;
cin>>NumB;

int Result = NumA + NumB;
cout << NumA << " + " << NumB << " = " << Result<<endl;
}

int main()
{
int Op;
do
{
    cout << "Main" << endl;
    cout << "1) Add" << endl;
    cout << "2) Another function call" << endl;
    cout << "3) Yet another function call" << endl;
    cout << "n) ..." << endl;
    cout << "0, to exit" << endl;
    cin>>Op;
    switch (Op)
    {
    case 1:
    {
        add();
    }
    default:
    {
        break;
    }
    }
}
while (Op != 0);

}

2 个答案:

答案 0 :(得分:0)

最简单的选择是处理其中一个出口点 切换案例陈述如下。

***另外不要忘记在每个案例陈述后添加break语句

switch (Op)
{
    case 1:
        add();
    break ;

    case 0:
        return 0 ;
    break ;

    default:
        cout << "Invalid option" << endl;
    break;
}

由于

答案 1 :(得分:0)

好吧,我试着根据你的描述写一个小样本程序。我不确定它是否适用于Visual Studio。我使用g ++在MacOS上编译它。下面的代码可能不是编写程序的好方法,但它有用,可能对你的事业有帮助。

我修改了你的代码以制作一个更简单的程序,以便更好地理解 -

#include <signal.h>
#include <stdlib.h>
#include <iostream>

int sum = 0;
int main(); // Prototyping main() is also not recommended

void siginthandler(int param)
{
    std::cout << "[INTERRUPT] Sum so far => " << sum << "\n";
    main(); // main() shouldn't be called here, but rather some menu function
}

void add()
{
    std::cout << "Addition\n";
    std::cout << "Enter a number : ";
    int NumA;
    std::cin >> NumA;
    sum += NumA;
    std::cout << "[ADD] Sum so far => " << sum << "\n";
}

int main()
{
    // Register the SIGINT handler with the main()
    signal(SIGINT, siginthandler);
    int Op; 
    do  
    {   
        std::cout << "Main" << std::endl;
        std::cout << "1) Add" << std::endl;
        std::cout << "2) Another function call" << std::endl;
        std::cout << "0, to exit" << std::endl;
        std::cin>>Op;
        switch (Op)
        {   
            case 1:
            {   
                add(); break;
            }   
            default:
            {
                break;
            }
        }
    }
    while (Op != 0);
    std::cout << "[MAIN] Sum so far => " << sum << "\n";
    exit(0);
}

它在g ++上编译,所以我不确定它是否适用于您的情况。

以下是执行程序时得到的输出:

Abhinavs-MacBook-Pro:test abhinav$ ./a.out
Main
1) Add
2) Another function call
0, to exit
1
Addition
Enter a number : 34
[ADD] Sum so far => 34
Main
1) Add
2) Another function call
0, to exit
1
Addition
Enter a number : 56
[ADD] Sum so far => 90
Main
1) Add
2) Another function call
0, to exit
^C[INTERRUPT] Sum so far => 90
Main
1) Add
2) Another function call
0, to exit
0
[MAIN] Sum so far => 90
Abhinavs-MacBook-Pro:test abhinav$

我希望上面的代码有所帮助。愿原力与你同在..!! :)