C 为什么#如果0对#如果(1>;1)?
我正在使用一个遗留代码,并发现:C 为什么#如果0对#如果(1>;1)?,c,c-preprocessor,preprocessor-directive,C,C Preprocessor,Preprocessor Directive,我正在使用一个遗留代码,并发现: #if (1 > 1) //define some function #endif 不确定,这与注释掉代码的更典型的#if 0有什么不同?有什么想法吗?这两个表达式都是假的,所以代码永远不会编译 以下是程序员不想使用明显的#if 0预处理器指令来禁用代码段的可能解释: 程序员不想grep'#if 0'找到他的代码片段 本地编码约定不允许#if 0,并可能通过脚本强制执行此规则。程序员找到了一个扭曲的解决办法 一些程序员的编辑器(例如vim)将着色#如果
#if (1 > 1)
//define some function
#endif
不确定,这与注释掉代码的更典型的
#if 0
有什么不同?有什么想法吗?这两个表达式都是假的,所以代码永远不会编译
以下是程序员不想使用明显的#if 0
预处理器指令来禁用代码段的可能解释:
- 程序员不想
找到他的代码片段grep'#if 0'
- 本地编码约定不允许
,并可能通过脚本强制执行此规则。程序员找到了一个扭曲的解决办法#if 0
- 一些程序员的编辑器(例如
)将vim
节作为注释,使用不同的预处理器表达式将无法实现这一点着色#如果0
- 程序员可能认为在
之后需要一个布尔表达式。括号的使用支持这种解释,但只有程序员才能知道#if
- 原始代码具有
,并且#if(OPTION>1)
使用OPTION
脚本或其他一些全局文本替换方法更改为sed
1
- 程序员可能想引起下一位读者的注意。要么出于幽默的目的,要么出于其他模糊的目的。在这种情况下实现的目标
- 正如一些评论中所指出的,这可能是混淆代码、提高工作安全性的一次蹩脚尝试。。。为此,我建议使用gets操作符:
#if(0我认为
充当读者的注释。它是一个笑脸或其他表情!:-)(1>1)
也可以写
或类似的东西。可能,最初除了(0>0)
s之外,还有其他东西。。然后它们逐渐变异。不,没有区别。这里有一个粗略的猜测。我经常使用1
在开发/调试期间禁用代码部分。在发布上述代码之前,我会搜索#if 0
,以确保一切恢复正常。因此,对于需要在多个发布周期中禁用的代码块,我将使用非#if 0
的内容。然而,我的案例是#if 0
。将其更改为#如果定义了一些不可能定义的东西
-谜团很有趣。受@user3386109的启发,我可以想出另一个疯狂的想法:你可以通过#if(!!(1>1)!=1)
#if对禁用的块进行编号(用于识别)(1关于预处理器有很多奇怪的迷信,这看起来是其中一个更奇怪的迷信。它当然没有明确定义的特殊含义(即,除了它真正等同于
),所以你的猜测和我们的一样好…@user4581301:我不确定这将如何购买就业保险,但我将添加读者警告。#if 0
==owl,0v0
==cat@cat我怀疑=^。^=
版本是否会起作用,但是如果您将owl示例修改为=^.^==cat
你只需要一个名为#if(OvO!=owl),您可能会得到类似的行为
的结构,其中包含一个成员=^
…哦,这是C:P(我认为^=
也不是有效的C语法。)@cat这就是为什么我使用0v0
-s而不是零的原因。O
也可以使用。但是Ov0
在这个单空间字体中有小点C:0