Jenže to v tomto případě není ani tak numerická konstanta, jakožto spíš boolean. While (true) je úplně standardní konstrukce, tak by mě zajímalo, v čem je (by mohl být) problém?
Problém je třeba v tom, že žádný
true není v C definováno. A testovat v C proti
true je sebevražda. Proč by to měl člověk dělat při nekonečné smyčce?
Navíc pokud předpokládáme, že se funkce
isExit() zabývá nějak vnitřním stavem hlavní smyčky, je nesmysl to volat hned na vstupu. Pokud nevybleješ průchod smyčkou ještě jednou před ni. Takže pokud chceš opravdu testovat
isExit() na okraji smyšky, je vhodnější
do-while podle principu DRY.
Každopádně endless loop + break má výhodu v tom, že můžeš testovat kdekoliv - na začátku smyčky zpracuješ události, aktualizuješ stav a můžeš testovat, jestli je to stav pro ukončení. Zbytek logiky smyčky nemusíš při ukončení brát v potaz...
Nevidím důvod, proč psát
...
updateSa();
while(s != STATE_EXIT) {
updateSa();
if(s != STATE_EXIT) {
...
}
}
když můžu napsat
for(;;) {
updateSa();
if(s == STATE_EXIT) {
break;
}
... // Neprovede se pri ukonceni
}
a mít tam jednu podmínku místo dvou (2 stejný podmínky bez optimalizace = 2x zahazování pipeline, rozhození dvoubitovýho prediktoru skoků,...)