回覆列表
  • 1 # hspll4835

    條件編譯屬於三種宏定義中的一種,條件指示符的最主要目的是防止標頭檔案的重複包含和編譯,例如:一個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

  • 中秋節和大豐收的關聯?
  • 失去了一段刻骨銘心的的愛情,又遇到一段新的愛情是什麼感受?