要删除循环的要求之一(如该问题中所述)就是它
- 不访问或修改易失性对象
所以,
void wait_forever(void)
{
volatile int i = 1;
while (i) ;
}
Run Code Online (Sandbox Code Playgroud)
应该这样做,虽然我肯定会通过查看使用您的特定工具链生成的程序的反汇编来验证这一点.
像这样的函数也是GCC noreturn属性的一个很好的候选者.
void wait_forever(void) __attribute__ ((noreturn));
void wait_forever(void)
{
volatile int i = 1;
while (i) ;
}
int main(void)
{
if (something_bad_happened)
wait_forever();
}
Run Code Online (Sandbox Code Playgroud)