При компиляции цикла while без тела я увидел это сообщение:
warning: suggest a space before ';' or explicit braces around empty body in 'while' statement
Зачем мне ставить пробел?Чтобы было ясно, что мой цикл ничего не делает?
Да - обычное соглашение состоит в том, чтобы поместить это в строку отдельно, что-то вроде этого:
while (*d++ = *s++) ;
Некоторые люди предпочитают использовать такие вещи как:
while (*d++ = *s++) { /* intentionally empty */ }
Почему я должен поставить пробел? Чтобы было ясно, что мой цикл ничего не делает?
Да, именно так.
Многие неопытные программисты часто ставят ; после оператора потока управления, например for или while, поскольку они предполагают, что ; идет в конце каждой строки, а не только в конце операторов и объявлений , Предупреждение просто предлагает прояснить, что вы понимаете, что создали пустой цикл.
;
for
while
Более очевидный синтаксис цикла с пустым телом заключается в использовании оператора continue:
continue
while (condition_with_side_effects) continue;
Таким образом, никто не подумает, что вы случайно добавили постороннее ;:
while (condition); // bad style
Да, это просто для того, чтобы показать, что вы автоматически не поставили точку с запятой в конце строки.