gpt4 book ai didi

c - 无限循环中的返回语句

转载 作者:行者123 更新时间:2023-12-02 06:17:38 25 4
gpt4 key购买 nike

如果这个 return 语句在这个无限 while(1) 循环中,它会返回到哪里?更重要的是,我不知道 while(1) 循环会被破坏???

void __attribute__((interrupt, no_auto_psv)) _T3Interrupt(void)
{
int count;

IFS0bits.T3IF = 0; // clear Tmr3 interrupt flag

StopMotor();
IEC0bits.ADIE = 0; // disable ADC interrupt
IEC0bits.CNIE = 0; // disable CN interrupt
IEC0bits.T3IE = 0; // disable Tmr3 interrupt

T3CONbits.TON = 1; // restart tmr3
count = 0;

while (1)
{
if (IFS0bits.T3IF)
{
IFS0bits.T3IF = 0; // clear flag
if (count++ >= RESTART_COUNT)
{
IEC0bits.ADIE = 1; // enable ADC interrupt
IEC0bits.CNIE = 1; // enable CN interrupt
T3CONbits.TON = 0; // stop tmr3
IEC0bits.T3IE = 1; // enable Tmr3 interrupt
return;
}
}
}
return;
}

最佳答案

所有 return 语句都将返回到调用函数的位置,无论它们位于函数中的何处。

例如,如果我写:

int main()
{
_iT3Interrupt();

}

然后 _iT3Interrupt 中的 return 语句会将控制流恢复到 main

此外,任何循环都可以通过以下任何方式退出(即使条件为1true 或某些等效条件)构造:

break; //exits the loop

return; //exits the function, thus ending the loop

goto <label-outside-loop>; //self-explanatory

exit(); abort(); //exits the program. Bit of a stretch to say that this ends the loop...

而在 C++ 中,throw 将展开堆栈,直到它到达相应的 catch,从而退出函数。 C 的 setjmplongjmp 函数也可能适用于此,但我对 C 的了解还不够多,无法确定它们的用法。

关于c - 无限循环中的返回语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22645897/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com