【发布时间】:2016-01-29 04:00:42
【问题描述】:
这个例子是一个非常基础和简单的程序。
我希望能够在用户想要的时候退出函数。
在 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);
}
【问题讨论】:
-
我不是专家,但我认为这将进入多线程领域。或者一种非常粗略的方法是调用一个函数,该函数在每行之后监听按键。因此,当您按下某个键时,它可能会注意到并停止执行。但这是一个可怕的解决方法。
-
你可以在这里使用 SIGINT。当您按下 CTRL + C 时,键盘会创建 SIGINT。请参阅 (stackoverflow.com/questions/482702/using-sigint) 中的第二个答案,并尝试定义您的自定义 SIGINT 处理程序,有点像
void siginthandler(int param) -
@badola 我尝试使用您链接的第二个答案中的代码,每次我按 ctrl+c 时它都会抛出异常并加载 kernel32 符号说源不可用。我在 Visual Studio 2015 上。我使用了完全相同的代码。
-
好吧,我在我的 MacOS 上尝试了一些东西,它已经使用 g++ 编译器进行了编译。评论太长了,让我把它作为答案。
标签: c++ visual-studio function visual-c++ return