Информация об изменениях

Сообщение Как сделать вечный цикл? от 16.09.2023 8:23

Изменено 16.09.2023 8:24 vsb

Как сделать вечный цикл?
Пишу программу для микроконтроллера, нужно написать код, который просто будет крутиться в вечном цикле. Т.е. компилироваться в инструкцию b ..

В голову, конечно, сразу приходит for (;) {}, но clang с оптимизацией этот цикл тупо выкидывает.

Можно написать for (volatile unsigned unused;; unused++) {}, это код не выкидывает, но мне не нравится, что он постоянно гоняет трафик между процессором и оперативной памятью, например это может мешать DMA-передачам.

Можно ли это сделать на C, согласно стандарту и без ассемблерных вставок?
Как сделать вечный цикл?
Пишу программу для микроконтроллера, нужно написать код, который просто будет крутиться в вечном цикле. Т.е. компилироваться в инструкцию b .

В голову, конечно, сразу приходит for (;) {} но clang с оптимизацией этот цикл тупо выкидывает.

Можно написать for (volatile unsigned unused;; unused++) {} этот код не выкидывает, но мне не нравится, что он постоянно гоняет трафик между процессором и оперативной памятью, например это может мешать DMA-передачам.

Можно ли это сделать на C, согласно стандарту и без ассемблерных вставок?