Почему бы не кэшировать переменную? Вы не изменяете это в цикле, поэтому, по мнению Си, это эквивалентно while (true);
.
То есть, если ваша программа не является многопоточной, в этом случае переменная может быть изменена , пока цикл работает и ничего не делает. Однако язык C ничего не знает о потоках (и в более общем смысле, как заметил Лундин, о любых функциях, которые не вызываются из main
или из функции, вызываемой из main
и т. Д.), Поэтому вам необходимо используйте volatile
самостоятельно, чтобы сообщить C о том, что происходит, о чем он не знает.