【发布时间】:2016-08-31 19:26:11
【问题描述】:
我正在使用旧代码并发现:
#if (1 > 1)
//define some function
#endif
不确定,这与更典型的#if 0 有何不同,注释掉代码?有什么想法吗?
【问题讨论】:
-
可能,最初除了
1s之外还有其他一些东西。然后它们逐渐变异。不,没有区别。 -
这是一个疯狂的猜测。我经常使用
#if 0在开发/调试期间禁用部分代码。在发布上述代码之前,我使用 grep 搜索#if 0以确保一切恢复正常。所以我会使用#if 0以外的其他东西来处理需要通过多个发布周期禁用的代码块。但是,我的情况是#ifdef something_that_cant_possibly_be_defined。 -
把它改成
#if (!!(1 > 1) != 1)- 谜团很有趣。 -
好吧,受@user3386109 的启发,我可以想出另一个疯狂的想法:您可以通过
#if (1<1)、#if (2<2)等为禁用的块编号(用于识别)... -
关于预处理器有很多奇怪的迷信,这看起来像是更奇怪的迷信之一。它当然没有明确定义的特殊含义(也就是说,除了它真正等同于
#if 0),所以你的猜测和我们的一样好......
标签: c c-preprocessor preprocessor-directive