跳至內容

標頭檔

出自Taiwan Tongues 台語維基
於 2025年8月19日 (二) 21:59 由 TaiwanTonguesApiRobot留言 | 貢獻 所做的修訂 (從 JSON 檔案批量匯入)

(差異) ←上個修訂 | 已批准修訂 (差異) | 最新修訂 (差異) | 下個修訂→ (差異)

佇咧程式設計內底,特別是佇咧 C 語言佮 C + + 中,標頭檔抑是包含檔案是一个檔案,通常是原始碼的形式,由編譯器咧處理另外一个原始檔的時陣自動包含入來。一般來講,程式設計師通過編譯器指令共標頭檔包括進其他原始檔的開始(抑是 _ 頭部 _)。

一个標頭檔一般包含類、子程式、變數佮其他的認捌的前置聲明。需要乎在一个以上原始檔中被聲明的識別碼會當予人囥佇一个標頭檔中,並佇需要的所在包含這个標頭檔。佇咧 C 語言佮 C + + 中,標準庫函式習慣上佇標頭檔中聲明,參見 C 標準函式庫佮 C + + 標準函式庫。

作用

佇大多數現代電腦程式語言當中,程式會當予人分做如子程式的閣較細的組件,遮的組件可以通過誠濟物理源檔案分發,遮的原始檔被單獨編譯。做一个子程式佇定義的位置以外的所在予人使用的時陣,就需要引入前置聲明佮函式原型的概念。比如講,一个函式在一个原始檔中有如下定義:

佇另外一个原始檔中參照的時陣就會當聲明甲按呢(包含函式原型):

猶毋過,這个簡單的方法需要程式設計師為 ` add ` 佇兩个所在維護函式聲明,一个是包含函式實現的檔案,以及使用該函式的檔案。若函式的定義改變矣,程式設計師必須愛共你更改散布佇咧程式所有的原型。

一檔欲提供了解決辦法。模組的標頭檔聲明作為模組 _ 公共介面 _ 一部份的每一个函式、物件猶閣有資料的類型。比如講,佇下跤的狀況下,標頭檔干焦包含 ` add ` 的聲明。每一个參照了 ` add ` 的原始檔使用 ` # include ` 來包含標頭檔:

按呢就減少維護的負擔:當定義改變的時陣,只須更新聲明的一个獨立副本(佇標頭檔中的彼个)。 佇包含著對應的定義的原始檔中嘛會當包含標頭檔,這予矣編譯器一个檢查聲明佮定義一致性的機會。

通常,標頭檔予人用來唯一指定介面,而且加減提供一寡文件來說明如何使用佇該檔案中聲明的組件。佇這个例中,子程式的實現囥佇一个單獨的原始檔中,這个原始檔被單獨編譯。(佇咧 C 和 C + + 中有一个例外,即行內函式。行內路通常囥佇標頭檔內底,因為大多數實現若毋知影其定義,咧編譯時便無法度適當的展開行內函式。)

替代

佇存取聲明佇無仝檔案中的識別碼問題上,標頭檔毋是唯一的解決方法。𪜶嘛是有缺點,當定義改變的時陣可能猶原需要佇兩个所在來修改(標頭檔佮原始檔)。 一寡閣較新的語言(如 Java)省略落一个標頭檔,號名方案閣使用(naming scheme), 這就允准編譯器來定位佮介面佮類實現相關的原始檔。

# include 語句的兩種語法

` # include ` 語句有兩種方式包含標頭檔,分別是使用雙引號 ` " " ` 佮左右尖括號 ` < > `。其區莫啦(對於毋是使用完全檔案路徑名的)標頭檔的搜尋順序無仝:

使用雙引號 ` " " ` 的標頭檔的搜揣順序:

一 . 包括講該 ` # include ` 語句的原始檔所在咧 kha-tá-lok-guh; 二 . 包括講該 ` # include ` 語句的已經拍開的標頭檔的逆序(因為標頭檔會當 ` # include ` 另外一个標頭檔構做一个序列); 三 . 編譯選項-I 所指定的 kha-tá-lok-guh 四 . 環境變數 INCLUDE 所定義的 kha-tá-lok-guh 使用左右尖括號 ` < > ` 的標頭檔的搜揣順序:

一 . 編譯選項-I 所指定的 kha-tá-lok-guh 二 . 環境變數 INCLUDE 所定義的 kha-tá-lok-guh

參見

  • 應用程式介面
  • 介面描述語言
  • # pragmaonce

外部連結

  • 組織代碼檔案(佮使用標頭檔的陷阱)
  • C + + 標頭檔包含規則