#ifndef #endif學習

#ifndef都是一種宏定義判斷,作用是防止多重定義。#ifndef是if not define的簡寫。
使用場景爲:

  1. 頭文件中使用,防止頭文件被多重調用
  2. 作爲測試使用,省去註釋代碼的麻煩
  3. 作爲不同角色或者場景的判斷使用。
  4. 模塊化操作,不要在主程序寫大量代碼,直接調用模塊。
    定義

#ifndef <標識> //先測試x是否被宏定義過
  #define <標識> //如果沒有宏定義下面就宏定義x並編譯下面的語句
  …
  #endif //如果已經定義了則編譯#endif後面的語句

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

#ifndef STDIO_H
  #define STDIO_H
  …
#endif

這是宏定義的一種,它可以根據是否已經定義了一個變量來進行分支選擇,一般用於調試等等.實際上確切的說這應該是預處理功能中三種(宏定義,文件包含和條件編譯)中的一種----條件編譯。 C語言在對程序進行編譯時,會先根據預處理命令進行“預處理”。C語言編譯系統包括預處理,編譯和鏈接等部分。
  條件指示符#ifndef檢查預編譯常量在前面是否已經被宏定義。如果在前面沒有被宏定義,則條件指示符的值爲真,於是從#ifndef到#endif之間的所有語句都被包含進來進行編譯處理。相反,如果#ifndef指示符的值爲假,則它與#endif指示符之間的行將被忽略。條件指示符#ifndef 的最主要目的是防止頭文件的重複包含和編譯。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章