C/C++預編譯指令和條件編譯


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;}}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM