我是第一次使用 PC Lint。当 PC Lint 警告我关于我的while(TRUE)
.
这就是它所说的:
716: while(1) ... -- 找到了 while(1) ... 形式的构造。
虽然这表示期望布尔值的上下文中的常量,但它可能反映了一种编程策略,其中无限循环以该构造为前缀。因此,它被赋予了一个单独的编号,并被置于信息类别中。更常规的无限循环前缀形式是 for(;;)。
我没看懂这个说法。谁能帮我理解它?
文本说,虽然while(TRUE)
(被预处理成while(1)
)是一个完全有效的无限循环,但更传统的无限循环编写形式是
for(;;)
{
...
}
因为它根本不使用任何值,因此不易出错。
它说更传统的无限循环是for(;;)
,我会说这是一个有争议的断言,并且它将此构造归类为“信息类别”发现 - 我怀疑如果你使用它for(;;)
代替它会消失。我一直写这些while(1)
,从来没有for(;;)
我自己。如果它符合您的预期,我会忽略 PC LINT 对此的发现,或者如果您担心有人重新定义,我会切换它,TRUE
因为如果有人重新定义TRUE
您的循环根本不会运行。