如果为 0 则阻止代码段

如果你正在考虑删除或想要暂时禁用的代码段,则可以使用块注释对其进行注释。

/* Block comment around whole function to keep it from getting used.
 * What's even the purpose of this function?
int myUnusedFunction(void)
{
    int i = 5;
    return i;
}
*/

但是,如果你使用块注释包围的源代码在源中具有块样式注释,则现有块注释的结尾* /可能导致新块注释无效并导致编译问题。

/* Block comment around whole function to keep it from getting used.
 * What's even the purpose of this function?
int myUnusedFunction(void)
{
    int i = 5;

    /* Return 5 */
    return i;
}
*/ 

在前面的示例中,函数的最后两行和最后一行’* /‘由编译器看到,因此它将编译时出错。更安全的方法是在要阻止的代码周围使用 #if 0 指令。

#if 0
/* #if 0 evaluates to false, so everything between here and the #endif are
 * removed by the preprocessor. */
int myUnusedFunction(void)
{
    int i = 5;
    return i;
}
#endif

这样做的好处是,当你想要返回并找到代码时,搜索“#if 0”比搜索所有注释要容易得多。

另一个非常重要的好处是你可以使用 #if 0 嵌套注释掉代码。这不能通过评论来完成。

使用 #if 0 的另一种方法是使用一个名称,该名称不是 #defined,但更能描述代码被阻止的原因。例如,如果有一个似乎是无用的死代码的函数,一旦其他功能到位或类似的东西,你可以使用 #if defined(POSSIBLE_DEAD_CODE)#if defined(FUTURE_CODE_REL_020201) 代码。然后在返回以删除或启用该源时,很容易找到这些源部分。