PC Lint while(TRUE)vs for(;;)

时间:2011-09-23 11:27:57

标签: c embedded lint pc-lint

我第一次使用PC Lint。当PC Lint警告我while(TRUE)时,我正在“linting”我的代码。

这就是它所说的:

  

716:while(1)... - 形式的构造,而(1)......被发现。

     

而这表示期望布尔值的上下文中的常量,   它可能反映了无限循环的编程策略   以此构造为前缀。因此给它一个单独的数字和   已被列入信息类别。更常规   无限循环前缀的形式是(;;)。

我不明白这句话。任何人都可以帮我理解吗?

2 个答案:

答案 0 :(得分:5)

文本说尽管while(TRUE)(它被预处理成while(1))是一个完全有效的无限循环,但写一个无限循环的更常规形式是

for(;;)
{
   ...
} 

因为它根本不使用任何值,因此不易出错。

答案 1 :(得分:3)

它说更传统的无限循环是for(;;),我认为这是一个可论证的断言,并且它将此构造归类为“信息类别”发现 - 我怀疑如果你使用{ {1}}相反,它会消失。我总是把它们写成for(;;)而不是while(1)我自己。如果它符合您的预期,我会忽略PC LINT在此问题上的发现,或者如果您担心有人重新定义for(;;),则会将其切换为{em>如果有人重新定义TRUE你的循环根本不会运行。