| 模式 | 用途 | 示例 |
|---|---|---|
#if 0 ... #endif | 大塊代碼暫時禁用(比 /* */ 支持巢狀) | 調試代碼、舊邏輯保留 |
#if 1 ... #endif | 強制啟用代碼塊,構造局部作用域 | 測試新邏輯、變量隔離 |
#if DEBUG ... #endif | 配合編譯選項 -DDEBUG 控制調試輸出 | 生產環境零開銷 |
/* */?/*
舊代碼 /* 內部有註釋 */ 更多代碼
*/ ← 此處提前結束,導致編譯錯誤
#if 0 不識別內部註釋符號,完美支持巢狀。
int main() {
int a = 0;
#if 0 // 改為 1 即可啟用
a = 1;
printf("Debug: a=%d\n", a);
#endif
printf("Release: a=%d\n", a); // 輸出 0
return 0;
}
#define VERSION_PRO 1
#define VERSION_LITE 2
#define CURRENT_VERSION VERSION_PRO
#if CURRENT_VERSION == VERSION_PRO
void enable_advanced_features() { ... }
#elif CURRENT_VERSION == VERSION_LITE
void enable_advanced_features() { /* stub */ }
#endif
#if 0,頂部加說明:#if 0 // TODO: remove after v2.0#ifdef DEBUG,構建系統控制 -DDEBUG#if,超過 3 層拆分為獨立配置頭文件