#if 0 vs #if(1> 1)?任何线索

时间:2016-05-05 21:03:57

标签: c c-preprocessor preprocessor-directive

我正在处理遗留代码并发现:

Object.keys

不确定,这与更典型的#if (1 > 1) //define some function #endif 有什么不同,可以注释掉代码?有什么想法吗?

2 个答案:

答案 0 :(得分:63)

两个表达式都是false,因此代码永远不会被编译。

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

  • 程序员不希望grep '#if 0'找到他的代码段。
  • 本地编码约定禁止#if 0并可能使用脚本强制执行此规则。程序员找到了扭曲的工作。
  • 一些程序员的编辑(例如vim)将#if 0部分作为注释着色,使用不同的预处理器表达式使其失败。
  • 程序员可能认为在#if之后需要一个布尔表达式。括号的使用支持这种解释,但只有程序员才能说明。
  • 原始代码已#if (OPTION > 1)OPTION已更改为1,并带有sed脚本或其他全局文字替换方法。
  • 程序员可能想吸引下一位读者的注意力。无论是出于幽默目的还是其他一些模糊不清的目标。在这种情况下实现了目标。
  • 如某些评论中所述,这可能是混淆代码,增加工作安全性的蹩脚尝试......为此,我建议获取运算符:{{1}或 appromixator #if (0 <- 1)

答案 1 :(得分:1)

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

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