1. 常見的預編譯指令和條件編譯項有如下這些:
#define、#undef、#ifdef、#ifndef、#if、#elif、#else、#endif
1 #define 定義一個預處理宏 2 #undef 取消宏的定義 3 #if 編譯預處理中的條件命令,相當於C語法中的if語句 4 #ifdef 判斷某個宏是否被定義,若已定義,執行隨后的語句 5 #ifndef 與#ifdef相反,判斷某個宏是否未被定義 6 #elif 若#if, #ifdef, #ifndef等條件不滿足,則執行 7 #else 與#if, #ifdef, #ifndef對應, 若這些條件不滿足,則執行 8 #endif #if, #ifdef, #ifndef這些條件命令的結束標志. 9 defined 與#if, #elif配合使用,判斷某個宏是否被定義
2. #define介紹
#define MACRO_NAME[args] [tokens]
定義一個宏,args(參數)和tokens(標記)都是可選的,比如,
#define PI 3.14
#define DEBUG
沒有標記的宏,默認值是 1,
之后出現的MACRO_NAME將被替代為所定義的標記
宏定義,按照是否帶參數通常分為對象宏、函數宏兩種。
對象宏: 不帶參數的宏被稱為"對象宏(objectlike macro)"。對象宏多用於定義常量、通用標識。例如:
// 常量定義 #define MAX_LENGTH 100 // 通用標識,日志輸出宏 #define SLog printf // 預編譯宏 #define _DEBUG
函數宏:帶參數的宏。例如
// 最小值函數 #define MIN(a,b) ((a)>(b)? (a):(b)) // 安全釋放內存函數 #define SAFE_DELETE(p) {if(NULL!=p){delete p; p = NULL;}}