我第一次使用PC Lint。当PC Lint警告我while(TRUE)
时,我正在“linting”我的代码。
这就是它所说的:
716:while(1)... - 形式的构造,而(1)......被发现。
而这表示期望布尔值的上下文中的常量, 它可能反映了无限循环的编程策略 以此构造为前缀。因此给它一个单独的数字和 已被列入信息类别。更常规 无限循环前缀的形式是(;;)。
我不明白这句话。任何人都可以帮我理解吗?
答案 0 :(得分:5)
文本说尽管while(TRUE)
(它被预处理成while(1)
)是一个完全有效的无限循环,但写一个无限循环的更常规形式是
for(;;)
{
...
}
因为它根本不使用任何值,因此不易出错。
答案 1 :(得分:3)
它说更传统的无限循环是for(;;)
,我认为这是一个可论证的断言,并且它将此构造归类为“信息类别”发现 - 我怀疑如果你使用{ {1}}相反,它会消失。我总是把它们写成for(;;)
而不是while(1)
我自己。如果它符合您的预期,我会忽略PC LINT在此问题上的发现,或者如果您担心有人重新定义for(;;)
,则会将其切换为{em>如果有人重新定义TRUE
你的循环根本不会运行。