在编译没有主体的 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
)之后,因为他们认为 ;
位于每行的末尾,而不仅仅是语句和声明的末尾。该警告只是建议您更清楚地了解您已经创建了一个空循环。
更明显的空体循环语法是使用
continue
语句:
while (condition_with_side_effects)
continue;
这样就没有人会认为你不小心添加了无关的
;
:
while (condition); // bad style
是的,这只是为了表明你没有错误地在行尾自动放置分号。