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)
    或类似的东西。

    可能,最初除了
    1
    s之外,还有其他东西。。然后它们逐渐变异。不,没有区别。这里有一个粗略的猜测。我经常使用
    #if 0
    在开发/调试期间禁用代码部分。在发布上述代码之前,我会搜索
    #if 0
    ,以确保一切恢复正常。因此,对于需要在多个发布周期中禁用的代码块,我将使用非
    #if 0
    的内容。然而,我的案例是
    #如果定义了一些不可能定义的东西
    。将其更改为
    #if(!!(1>1)!=1)
    -谜团很有趣。受@user3386109的启发,我可以想出另一个疯狂的想法:你可以通过
    #if对禁用的块进行编号(用于识别)(1关于预处理器有很多奇怪的迷信,这看起来是其中一个更奇怪的迷信。它当然没有明确定义的特殊含义(即,除了它真正等同于
    #if 0
    ),所以你的猜测和我们的一样好…@user4581301:我不确定这将如何购买就业保险,但我将添加读者警告。
    0v0
    ==owl,
    =^。^=
    ==cat@cat我怀疑
    =^.^==cat
    版本是否会起作用,但是如果您将owl示例修改为
    #if(OvO!=owl),您可能会得到类似的行为
    你只需要一个名为
    =^
    的结构,其中包含一个成员
    ^=
    …哦,这是C:P(我认为
    0v0
    也不是有效的C语法。)@cat这就是为什么我使用
    O
    -s而不是零的原因。
    Ov0
    也可以使用。但是
    0
    在这个单空间字体中有小点C: