Re: [問題] 請問有關header檔的基本問題
※ 引述《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
02/08 01:08, 1F
推
02/08 10:02, , 2F
02/08 10:02, 2F
討論串 (同標題文章)
完整討論串 (本文為第 2 之 2 篇):
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章