为什么#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)
或类似的。
我正在使用遗留代码并发现了这个:
#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)
或类似的。