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

MIb*_*rah 30 c c-preprocessor preprocessor-directive

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

#if (1 > 1)
//define some function
#endif
Run Code Online (Sandbox Code Playgroud)

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

chq*_*lie 63

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

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

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

  • 那个或就业保险. (5认同)
  • 所以我们可以把它概括为"在脚下射击":) (3认同)
  • 对不起@chqrlie我应该将我的评论与经典的Dilbert漫画联系起来:http://dilbert.com/strip/1994-06-10 (2认同)