Канонический способ - использовавшийся с незапамятных времен, взгляните, например, на Лионскую книгу -
while(condition) // Here's the whole thing
; // empty body.
На самом деле, в общем случае соглашение «точка с запятой в отдельной строке» используется для нулевого оператора. Например, иногда вы увидите
if( condition-1)
;
else if (condition-2)
stmt;
else {
// do stuff here
}
Это гораздо более необычно, но обнаруживается либо там, где условие-1 очень сложно, так что вы не хотите отрицать это и риск путаницы, либо когда код был оптимизирован вручную дюйм его жизни, так что вы хотите сначала самый распространенный случай.
while(condition) ;
формы нужно рабски избегать, потому что это распространенная и раздражающая опечатка: вы должны дать понять, что сделали это нарочно. Пустые скобки
while(condition){
}
или его варианты также являются проблемой, потому что они либо недостаточно выделяются, либо, что еще хуже, приводят к другим опечаткам.