#ifndef宏定義用法

#ifndef   #ifndef x
  #define x
  ...
  #endif
  這是宏定義的一種,它可以根據是否已經定義了一個變量來進行分支選擇,一般用於調試等等.實際上確切的說這應該是預處理功能中三種(宏定義,文件包含和條件編譯)中的一種----條件編譯。 C語言在對程序進行編譯時,會現根據預處理命令進行“預處理”。C語言編譯系統包括預處理,編譯和鏈接等部分。
  #ifndef x
  //先測試x是否被定義過
  #define x
  //如果沒有定義下面就定義x並執行下面的語句
  ...
  #endif
  //如果已經定義了則執行#endif後面的語句
  條件指示符#ifndef檢查預編譯常量在前面是否已經被定義。如果在前面沒有被定義,則條件指示符的值爲真,於是從#ifndef到#endif之間的所有語句都被包含進來進行處理。相反,如果#ifndef指示符的值爲假,則它與#endif指示符之間的行將被忽略。條件指示符#ifndef 的最主要目的是防止頭文件的重複包含和編譯。
  補充一些內容:
  頭文件中的#ifndef (2007-09-30 10:07:52)
  標籤:學習公社
  千萬不要忽略了頭件的中的#ifndef,這是一個很關鍵的東西。比如你有兩個C文件,這兩個C文件都include了同一個頭文件。而編譯時,這兩個C文件要一同編譯成一個可運行文件,於是問題來了,大量的聲明衝突。
  還是把頭文件的內容都放在#ifndef和#endif中吧。不管你的頭文件會不會被多個文件引用,你都要加上這個。一般格式是這樣的:
  #ifndef <標識>
  #define <標識>
  ......
  ......
  #endif
  <標識>在理論上來說可以是自由命名的,但每個頭文件的這個“標識”都應該是唯一的。標識的命名規則一般是頭文件名全大寫,前後加下劃線,並把文件名中的“.”也變成下劃線,如:stdio.h
  #ifndef _STDIO_H_
  #define _STDIO_H_
  ......
  #endif

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