古詩詞大全網 - 成語大全 - C語言中條件編譯的作用

C語言中條件編譯的作用

條件編譯屬於三種宏定義中的壹種,條件指示符的最主要目的是防止頭文件的重復包含和編譯,例如:壹個c文件包含同壹個h文件多次,如果不加#ifndef宏定義,會出現變量重復定義的錯誤

條件編譯常用的有四個預處理命令:#if、#else、#elif、#endif。

#if指令的形式為:

#if?常量表達式

代碼塊

#endif

#if後面的常量表達式為值,則編譯它與#endif之間的代碼,否則跳過這些代碼。指令#endif標識壹個#if塊的結束。

#else被使用來標誌#if的末尾和#else塊的開始。這是必須的,因為任何#if僅有壹個#endif與之關聯。

#elif意指"else if",它形成壹個if else if嵌套語句用於多種編譯選擇。#elif後面跟壹個常量表達式,如果表達式是真,則編譯其後的代碼塊,不對其他#elif表達式進行檢測,否則順序測試下壹塊。常見的形式如下:

形式1:

  #ifdef?標識符

/*程序段?1*/

#else

/*程序段?2*/

#endif

它的作用是當標識符已經由#define定義過了,則編譯程序段1,否則編譯程序段2,也可以使用簡單形式

#ifdef?標識符

/*程序段1*/

 ? #endif

形式2:

? #ifndef?標識符

#define?標識符

/*程序段?1*/

#else

/*程序段?2*/

#endif

它的作用是當標識符沒有由#define定義過,則編譯程序段1,否則編譯程序段2 ,也可以使用簡單形式

? #ifndef?標識符

#define?標識符

/*程序段?1*/

#?endif

形式3:

 #if?表達式

/*程序段?1*/

#else

*程序段?2*/

#?endif

它的作用是 當“表達式”值為真時編譯程序段1。否則則編譯程序段2,也可以使用簡單形式

  #?if?表達式

/*程序段?1*/

#?endif

形式4:

#if?表達式1

/*程序段?1*/

#elif?表達式2

/*程序段?2*/

............

#elif?表達式n

/*程序段n?*/

#endif

它的作用是當“表達式1”值為1時編譯程序段1,表達式2的值為真是編譯程序段2,否則依次順序判斷到表達式n。

最後,條件編譯的條件是壹個常量表達式,支持邏輯與&&和或||運算。以上四種形式的條件編譯預處理結構都可以嵌套使用,

標識符: 在理論上來說可以是自由命名的,但每個頭文件的這個標識符都應該是唯壹的。標識的命名規則壹般是頭文件名全大寫,前後加下劃線,並把文件名中的“.”也變成下劃線,如:stdio.h。

#ifndef?_STDIO_H_

#define?_STDIO_H_

/*程序段?*/

#endif