【发布时间】:2011-11-23 14:29:09
【问题描述】:
我是第一次使用 PC Lint。当 PC Lint 警告我关于我的 while(TRUE) 时,我正在“整理”我的代码。
它是这样说的:
716: while(1) ... -- 找到了形式为 while(1) ... 的构造。
而 this 表示上下文中期望布尔值的常量, 它可能反映了一种编程策略,即无限循环 以这个结构为前缀。因此,它被赋予了一个单独的数字,并且 已归入信息类。更常规的 无限循环前缀的形式是for(;;)。
我不明白这句话。谁能帮我理解它?
【问题讨论】:
-
如果有人将
TRUE设置为0,while(TRUE)可能不是无限循环,而for(;;)则不可能发生这种情况。 -
@Dan D.,当然有——毕竟我们在谈论预处理器。
#define for(;;) if(0)怎么样? ;-) -
我知道它在说什么,但我不得不说这是一个奇怪的解释。
-
@PéterTörök:
#define for(;;) if(0)是非法的,因为 for(;;) 不是标识符,也不能被解析为宏声明 -
@Armen,很公平,我的 C 技能已经生疏了。我相信虽然可能很容易有一些扭曲的方式来实际做到这一点。如果有人邪恶到重新定义
TRUE,他也可以重新定义for:-(