1. 程式人生 > 其它 >前處理器之條件編譯

前處理器之條件編譯

一. 認識預編譯指令

條件編譯相關的預編譯指令有如下幾個:

#define 定義一個預處理巨集

#undef 取消巨集的定義

#if 編譯預處理中的條件指令,類似於if

#ifdef 判斷某個巨集是否已經被定義,若被定義,執行之後的語句(是if not defined的縮寫)

#ifndef 和ifdef相反,若某個巨集為被定義,執行之後的語句(是if defined的縮寫)

#elif 若#if, #ifdef, #ifndef或前面的#elif條件不滿足,則執行#elif之後的語句,類似於else-if,是(else if的縮寫)

#else 若與#if, #ifdef, #ifndef對應, 若這些條件不滿足,則執行#else之後的語句,類似於else

#endif #if, #ifdef, #ifndef這些條件命令的結束標誌

defined 與#if, #elif配合使用,判斷某個巨集是否被定義

defined使用舉例

#if defined(MAX) && !defined(MIN)

二. 常用的條件編譯方法

最常見的條件編譯使用ifdef和ifndef,用於防止重複包含標頭檔案的巨集

#ifndef _AB_CD_H
#defind _AB_CD_H

//declaration codes

#endif //_AB_CD_H

從理論上講可以出現在任何地方(標頭檔案和實現檔案),通常為了防止標頭檔案被多次包含,在標頭檔案中使用是必須的。

標頭檔案的標識(即上面的_AB_CD_H)在理論上來說可以是自由命名的,但每個標頭檔案的這個“標識”都應該是唯一的。標識的命名規則一般是標頭檔案名全大寫,並把檔名中的“.”也變成下劃線(也有前後還要加上下劃線的寫法),如:stdio.h變為STDIO_H