如果為 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) 程式碼。然後在返回以刪除或啟用該源時,很容易找到這些源部分。