Ответ 1
Одно из требований к удалению цикла (как упоминалось в этом вопросе) заключается в том, что он
- не имеет доступа или изменения изменчивых объектов
Итак,
void wait_forever(void)
{
volatile int i = 1;
while (i) ;
}
должен сделать трюк, хотя я, конечно же, проверю это, посмотрев на разборку программы, созданной с помощью вашей конкретной инструментальной цепочки.
Подобная функция будет хорошим кандидатом для атрибута 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();
}