C++ 我可以使用控制处理程序(ctr+;c)强制中断函数吗?

C++ 我可以使用控制处理程序(ctr+;c)强制中断函数吗?,c++,C++,在下面显示的示例代码中,我 BOOL WINAPI CtrlHandler(DWORD fdwCtrlType) { switch (fdwCtrlType) { // Handle the CTRL-C signal. case CTRL_C_EVENT: return TRUE; default: return FALSE; } } int main() { /* some initializ

在下面显示的示例代码中,我

BOOL WINAPI CtrlHandler(DWORD fdwCtrlType)
{
    switch (fdwCtrlType)
    {
        // Handle the CTRL-C signal. 
    case CTRL_C_EVENT:
        return TRUE;
    default:
        return FALSE;
    }
}

int main()
{
    /* some initializations */
    while(true)
    {
        process_user_input();
    }
}

process_user_input(...)
{
    /* checks input from a bunch of user inputs*/
    execute_xxx();
}

execute_xxx()
{
    /* do something */
    /* checks for a flag*/
    while(!flag)
    {
         /* do something*/
    }
}

在execute_xxx()函数中,假设应用程序停止在那里,正在等待一个标志,是否有办法清除已使用的资源,然后使用ctrl+c返回主函数中的while循环?

标志做什么/等待什么?您可以通过CTRL+C处理程序来实现这一点,但可能有更好的方法来实现这一点。这不能通过平台无关的方式来实现。如果您询问Windows,问题并添加<代码> WINAPI >代码>标签(也请参考返回值对于<代码> CtRLGC*Engult意味着什么。如果您的资源遵循标准C++ + RAI范式,则可以在检测到标志设置时获得<代码> ExeUTTEXXXX/CODE >抛出异常。
main
函数可以将调用包装在try-catch块中。当堆栈响应异常而展开时,正确封装的资源将被释放。如果您想中断等待,最好显示您是如何等待的。只是那个循环一次又一次地迭代吗?(我不会称之为“等待”,因为它正在做一些事情。)国旗在做什么?您可以通过CTRL+C处理程序来实现这一点,但可能有更好的方法来实现这一点。这不能通过平台无关的方式来实现。如果您询问Windows,问题并添加<代码> WINAPI >代码>标签(也请参考返回值对于<代码> CtRLGC*Engult意味着什么。如果您的资源遵循标准C++ + RAI范式,则可以在检测到标志设置时获得<代码> ExeUTTEXXXX/CODE >抛出异常。
main
函数可以将调用包装在try-catch块中。当堆栈响应异常而展开时,正确封装的资源将被释放。如果您想中断等待,最好显示您是如何等待的。只是那个循环一次又一次地迭代吗?(我不会称之为“等待”,因为它正在做一些事情。)