| 指令 | 觸發條件 | 典型場景 |
|---|---|---|
#ifdef MACRO | MACRO 已定義 | 啟用調試代碼、平台專用實現 |
#ifndef MACRO | MACRO 未定義 | 頭文件防重複包含、默認配置 |
#if EXPR | 表達式非零 | 版本號比較、功能開關組合 |
嵌入式項目中根據 LCD_Type 宏選擇不同解析度的 LOGO 資源:
#if ((LCD_Type == LCDW35) || (LCD_Type == LCDS35))
extern unsigned char TQ_LOGO_320240[]; // 3.5吋 320x240
#elif (LCD_Type == LCDT35)
extern unsigned char TQ_LOGO_240320[]; // 3.5吋 240x320
#elif (LCD_Type == LCDW43)
extern unsigned char TQ_LOGO_480272[]; // 4.3吋 480x272
#elif (LCD_Type == VGA)
extern unsigned char TQ_LOGO_640480[]; // VGA 640x480
#elif (LCD_Type == LCDA70)
extern unsigned char TQ_LOGO_800480[]; // 7吋 800x480
#endif
config.h 統一定義特性宏,業務代碼只做判斷-Wunused-macros)檢測失效分支互斥條件優先用 #if/#elif/#else 鏈,編譯器只評估一次條件,且邏輯更線性易讀。