为什么#if 0 与#if (1 > 1)?

Why #if 0 vs #if (1 > 1)?

我正在使用遗留代码并发现了这个:

#if (1 > 1)
//define some function
#endif

不确定,这与更典型的 #if 0 有何不同以注释掉代码?有什么想法吗?

两个表达式都是假的,所以代码永远不会编译。

以下是为什么程序员不想使用明显的 #if 0 预处理器指令来禁用一段代码的可能解释:

  • 程序员不想grep '#if 0'找到他的代码片段。
  • 本地编码约定不允许 #if 0 并可能通过脚本强制执行此规则。程序员找到了一个扭曲的解决方法。
  • 一些程序员的编辑器(例如 vim)将 #if 0 部分着色为注释,使用不同的预处理器表达式可以解决这个问题。
  • 程序员可能认为 #if 之后需要一个布尔表达式。括号的使用支持这种解释,但只有程序员才能知道。
  • 原始代码有 #if (OPTION > 1)OPTION 已通过 sed 脚本或其他一些全局文本替换方法更改为 1
  • 程序员可能想引起下一个 reader 的注意。出于幽默目的或其他一些晦涩的目标。在这种情况下达到目标。
  • 如某些评论所述,这可能是混淆代码以提高工作安全性的蹩脚尝试...为此,我建议使用 gets 运算符: #if (0 <- 1) 爬行加法器: #if (1 <~~ 1).

我认为 (1 > 1) 是对 reader 的评论。这是笑脸或其他表情符号! :-)

也可以写成(0>0)或类似的。