7

我是第一次使用 PC Lint。当 PC Lint 警告我关于我的while(TRUE).

这就是它所说的:

716: while(1) ... -- 找到了 while(1) ... 形式的构造。

虽然这表示期望布尔值的上下文中的常量,但它可能反映了一种编程策略,其中无限循环以该构造为前缀。因此,它被赋予了一个单独的编号,并被置于信息类别中。更常规的无限循环前缀形式是 for(;;)。

我没看懂这个说法。谁能帮我理解它?

4

2 回答 2

6

文本说,虽然while(TRUE)(被预处理成while(1))是一个完全有效的无限循环,但更传统的无限循环编写形式是

for(;;)
{
   ...
} 

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

于 2011-09-23T11:31:28.970 回答
4

它说更传统的无限循环是for(;;),我会说这是一个有争议的断言,并且它将此构造归类为“信息类别”发现 - 我怀疑如果你使用它for(;;)代替它会消失。我一直写这些while(1),从来没有for(;;)我自己。如果它符合您的预期,我会忽略 PC LINT 对此的发现,或者如果您担心有人重新定义,我会切换它,TRUE因为如果有人重新定义TRUE您的循环根本不会运行。

于 2011-09-23T11:33:12.750 回答