Цель предупреждающего сообщения? - PullRequest
0 голосов
/ 19 августа 2011

При компиляции цикла while без тела я увидел это сообщение:

warning: suggest a space before ';' or explicit braces around empty body in
'while' statement

Зачем мне ставить пробел?Чтобы было ясно, что мой цикл ничего не делает?

Ответы [ 4 ]

5 голосов
/ 19 августа 2011

Да - обычное соглашение состоит в том, чтобы поместить это в строку отдельно, что-то вроде этого:

while (*d++ = *s++)
    ;

Некоторые люди предпочитают использовать такие вещи как:

while (*d++ = *s++)
{
    /* intentionally empty */
}
4 голосов
/ 19 августа 2011

Почему я должен поставить пробел? Чтобы было ясно, что мой цикл ничего не делает?

Да, именно так.

Многие неопытные программисты часто ставят ; после оператора потока управления, например for или while, поскольку они предполагают, что ; идет в конце каждой строки, а не только в конце операторов и объявлений , Предупреждение просто предлагает прояснить, что вы понимаете, что создали пустой цикл.

2 голосов
/ 19 августа 2011

Более очевидный синтаксис цикла с пустым телом заключается в использовании оператора continue:

while (condition_with_side_effects)
    continue;

Таким образом, никто не подумает, что вы случайно добавили постороннее ;:

while (condition);    // bad style
1 голос
/ 19 августа 2011

Да, это просто для того, чтобы показать, что вы автоматически не поставили точку с запятой в конце строки.

...