#ifndef x
#define x
...
#endif
這是巨集定義的一種,它可以根據是否已經定義了乙個變數來進行分支選擇,一般用於除錯等等
#ifndef x
//先測試x是否被定義過
#define x
//如果沒有定義下面就定義x並執行下面的語句
...
#endif
//如果已經定義了則執行#endif後面的語句
條件指示符#ifndef檢查預編譯常量在前面是否已經被定義。如果在前面沒有被定義,則條件指示符的值為真,於是從#ifndef到#endif之間的所有語句都被包含進來進行處理。相反,如果#ifndef指示符的值為假,則它與#endif指示符之間的行將被忽略。條件指示符#ifndef 的最主要目的是防止標頭檔案的重複包含和編譯。
補充一些內容: 標頭檔案中的#ifndef 千萬不要忽略了頭件的中的#ifndef,這是乙個很關鍵的東西。比如你有兩個c檔案,這兩個c檔案都include了同乙個標頭檔案。而編譯時,這兩個c檔案要一同編譯成乙個可執行檔案,於是問題來了,大量的宣告衝突。
還是把頭檔案的內容都放在#ifndef和#endif中吧。不管你的標頭檔案會不會被多個檔案引用,你都要加上這個。
一般格式是這樣的:
#ifndef 《標識》
#define 《標識》
......
......
#endif
《標識》在理論上來說可以是自由命名的,但每個標頭檔案的這個「標識」都應該是唯一的。標識的命名規則一般是頭檔名全大寫,前後加下劃線,並把檔名中的「.」也變成下劃線,如:stdio.h
#ifndef _stdio_h_
#define _stdio_h_
......
#endif
關於工程標頭檔案的處理
不妨先看個例子吧 include include qdebug intmain int argc,char argv 如何編譯這個程式呢?我們知道,構建乙個c 程式 無非是編譯 包括編譯預處理 鏈結 這幾步。對這個程式來說呢,也就是,指定 標頭檔案路徑 qtdir include 庫檔案qtcore...
Linux標頭檔案 C C 標頭檔案
linux標頭檔案 c c 標頭檔案。linux常用標頭檔案如下 posix標準定義的標頭檔案 目錄項 檔案控制 檔名匹配型別 路徑名模式匹配型別 組檔案 網路資料庫操作 口令檔案 正規表示式 tar歸檔值 終端i o 符號常量 檔案時間 字元擴充套件型別 internet定義 套接字本地介面 in...
c 學習筆記 標頭檔案預處理
類的定義一般放在標頭檔案中,但因為在乙個給定的原始檔中,乙個類只能被定義一次 如果在多個檔案中定義乙個類,那麼每個檔案中的定義必須是完全相同的 為了避免含有類的定義的標頭檔案被多次包含,造成類被重複定義 常見錯誤就是link 2001 我們可以在類的定義的標頭檔案中使用標頭檔案預處理變數 例如 if...