Re: [問題] 請問有關header檔的基本問題

看板C_and_CPP (C/C++)作者 (有趣生活)時間19年前 (2006/02/07 13:55), 編輯推噓1(101)
留言2則, 2人參與, 最新討論串2/2 (看更多)
※ 引述《DreamZero (尋夢者)》之銘言: : ※ 引述《seamanku (SEAMAN)》之銘言: : : 謝謝你 ^^ : : 不過我想知道為什麼要這樣寫, : : 因為好像沒有加這三行宣告也是可以執行的? : 因為有時候一個專案會有很多原始碼檔案 : 但是可能同時有兩個檔案 include 同一個 header : 如果程式中同一個函數的 prototype 出現兩次會造成衝突 不是這樣 兩個以上 source file 有 include 同一個 header file 是常見的情況 因為每個要使用到特定函式的 source 本來就都要包含同一個函式的 prototype 整個程式中只能有一份的,是函式定義(definition) 這邊要解決的問題是 同一個 source 內,include 了某個 header 兩次以上的情況 例如 windows.h 裡面假如有一行 #include <winerror.h> 而 winerror.h 裡面定義了一堆錯誤代碼常數 那如果我不知道我只要去 include windows.h,就有包含 winerror.h 這件事的話 而在某個 .c 檔案寫了 #include <windows.h> #include <winerror.h> 如果沒有類似上面那種編譯條件判斷 那 winerror.h 裡面所定義的常數在同一個 source 就會出現兩份 編譯就會發生重複定義的錯誤 反之則可以運作 類似的例子,可以想想 C++ 的 fstream header 可以單獨使用 但卻也可以再加 iostream header 來用 : 所以藉由判斷是否定義過來決定是否引用 : 大概是這樣吧 : 如果有誤煩請各位高手指正 = =" -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.129.20.14 ※ 編輯: UNARYvvv 來自: 140.129.20.14 (02/07 14:14)

02/08 01:08, , 1F
果然記錯了 orz
02/08 01:08, 1F

02/08 10:02, , 2F
嗯 這個問與答對初學者是蠻好的範例
02/08 10:02, 2F
文章代碼(AID): #13w3PDTI (C_and_CPP)
文章代碼(AID): #13w3PDTI (C_and_CPP)