#if 0 /#if 1作用與用法
轉自:http://www.cppblog.com/Joe/archive/2011/05/24/147036.aspx
當註釋掉大塊程式碼時,使用"#if 0"比使用"/**/"要好,因為用"/**/"做大段的註釋要防止被註釋掉的程式碼中有巢狀的"/**/",這會導致註釋掉的程式碼區域不是你想要的範圍,當被註釋掉的程式碼很大時容易出現這種情況,特別是過一段時間後又修改該處程式碼時更是如此。
#if 0 / #if 1是支援巢狀的。
在這裡順便對條件編譯(#ifdef, #else, #endif, #if等)進行說明。以下分3種情況:
一、1. 情況1:
#ifdef _XXXX
...程式段1...
#else
...程式段2...
#endif
這表明如果識別符號_XXXX已被#define命令定義過則對程式段1進行編譯;否則對程式段2進行編譯。
2:情況2:
#ifndef _XXXX
...程式段1...
#else
...程式段2...
#endif
這裡使用了#ifndef,表示的是if not def。當然是和#ifdef相反的狀況(如果沒有定義了識別符號_XXXX,那麼執行程式段1,否則執行程式段2)。
3:情況3:
#if 常量
...程式段1...
#else
...程式段2...
#endif
這裡表示,如果常量為真(非0,隨便什麼數字,只要不是0),就執行程式段1,否則執行程式段2。
二、 巢狀情況
1、情況1
#if 常量a
...程式段1...
#else
#if 常量b
...程式段2...
#else
...程式段3...
#endif
這裡表示,如果常量a為真(非0,隨便什麼數字,只要不是0),就執行程式段1。當常量a為0,常量b為真時,執行程式段2;當常量a為0,常量b為0時,執行程式段3;