| 指令 | 用途 |
|---|---|
#ifdef MACRO | 若 MACRO 已定義 (無論值為何) 編譯後續區塊 |
#ifndef MACRO | 若 MACRO 未定義 編譯後續區塊 |
#if EXPR | 若常數運算式 EXPR 非零 編譯後續區塊 |
#else | 搭配上述指令,條件不成立時編譯此區塊 |
#endif | 結束條件編譯區塊 |
#undef MACRO | 取消 MACRO 定義,使後續 #ifdef 判定為假 |
#include
#define MAX
#define MAXIMUM(x,y) x>y?x:y
#define MINIMUM(x,y) x
MAX → #ifdef MAX 成立 → 輸出最大值 20MIN → #ifndef MIN 成立 → 輸出最小值 10#undef MAX 取消定義 → #ifdef MAX 不成立 → 輸出最小值 10#define MIN 定義 → #ifndef MIN 不成立 → 輸出最大值 20最終輸出:
The larger one is 20
The lower is 10
The lower one is 10
The larger one is 20
#ifdef _WIN32 ... #elif defined(__linux__) ... #endif#ifdef DEBUG printf(...); #endif 發布時不定義 DEBUG 即移除所有除錯碼#ifndef HEADER_H #define HEADER_H ... #endif (守衛巨集)#ifdef ENABLE_WIFI)MAX_BUFFER_SIZE)#error 在不支援的配置下編譯失敗並提示原因#pragma once (編譯器支援時) 替代傳統守衛巨集,更簡潔