C++ c++;执行递归函数时应用程序崩溃
我有一个名为C++ c++;执行递归函数时应用程序崩溃,c++,function,recursion,visual-c++,clr,C++,Function,Recursion,Visual C++,Clr,我有一个名为btnTimeIn的按钮,它调用identificationstaff()函数: public: System::Void btnTimeIn_Click(System::Object^ sender, System::EventArgs^ e) { this->identifyStaff(); } 我的identificationstaff()函数正在检查员工/用户是否被识别。如果未识别,则会出现一个带有ok按钮的消息框,如果单击了ok按钮,则会再次调用
btnTimeIn
的按钮,它调用identificationstaff()
函数:
public: System::Void btnTimeIn_Click(System::Object^ sender, System::EventArgs^ e) {
this->identifyStaff();
}
我的identificationstaff()
函数正在检查员工/用户是否被识别。如果未识别,则会出现一个带有ok按钮的消息框,如果单击了ok
按钮,则会再次调用IdentificationStaff()
函数
private: System::Void identifyStaff() {
uint32 flag = 0; // 1:accept or 0:reject
... some code beign skip
flag = 1;
... some code being skip
// accept or if finger print was indentified
if (flag == 1){
// Open confirmation form
}
else
{
if (MessageBox::Show("Staff unidentified. Please rescan again.",
"Timestamp", MessageBoxButtons::YesNo,
MessageBoxIcon::Question) == System::Windows::Forms::DialogResult::Yes) {
this->identifyStaff();
}
else {
// do nothing. Close the MessageBox
}
}
}
现在,我运行应用程序时会这样做:
我在帖子中更新了我的代码,以显示关于flag变量的信息。看起来递归函数的条件从未设置为true,最终导致堆栈溢出验证。你从未修改过
identificationstaff
中的identifited
变量。从OP对事件的描述来看,Someprogrammerdude似乎不是这样。这就是我试图做的,一个无限递归,如果可能的话。至少,你需要提供崩溃堆栈。你试图做的可能不是发生了什么?如果您在调试器中逐行遍历代码,逐步执行递归调用,它是否能按预期工作?是否会设置identified
。这就是为什么崩溃堆栈是典型的。