首頁  >  文章  >  後端開發  >  將 C 定義放入頭檔真的是通用規範嗎?

將 C 定義放入頭檔真的是通用規範嗎?

Linda Hamilton
Linda Hamilton原創
2024-11-23 20:53:15878瀏覽

Is Putting C   Definitions in Header Files Truly the Universal Norm?

將 C 定義放在頭文件中是通用規範嗎?

一個人的程式設計風格決定了類別聲明儲存在包含檔案中,而定義則儲存在包含檔案中駐留在單獨的 .cpp 檔案中。這種方法符合 Loki 在「C 頭文件,程式碼分離」一文中廣為人知的答案中概述的原則。

但是,一位同事堅持 C 聲明通常應包含同一頭文件中的定義。他認為這是一種普遍採用的現代做法。

驗證這種做法的普遍性

為了確定這種說法的有效性,讓我們檢查一下觀察到的常見做法這一行業。

回覆

您同事的說法不正確。廣泛的做法一直是並且仍然是將程式碼保留在 .cpp 檔案(或其他指定的副檔名)中並將聲明保留在標頭中。

雖然將程式碼放在標頭中偶爾會有好處,例如增強的編譯器內聯,由於程式碼在包含時的重複處理,它也可能導致編譯時間延長。此外,當程式碼包含在標頭中時,它可能會引入循環物件關係的複雜性。

總之,分離程式碼和聲明的流行做法符合您的偏好,這與您同事的說法相反。

異常和說明

模板出現了一個值得注意的異常。像 boost 這樣的現代庫大量使用模板,並經常採用“僅標題”方法。然而,這是一個專門適用於模板的獨特場景。

僅標頭程式碼的缺點

考慮只寫標頭程式碼的缺點非常重要:

  • 編譯時間延長,有關使用Boost 減少編譯時間的討論證明了這一點Asio。
  • 某些元素,例如全域對象,如果不求助於單例或其他有問題的解決方案,就無法在僅標頭的庫中實現。
  • 增量編譯的好處會流失,導致重新編譯時間過長甚至輕微

結論

分離聲明和定義的傳統做法仍然是C 的主導方法。雖然在某些特定情況下,僅標頭程式碼可能會有所幫助,但了解其限制並明智地使用它至關重要。聲稱普遍採用僅標頭定義是沒有根據的,建議保持分離代碼和聲明的既定實踐。

以上是將 C 定義放入頭檔真的是通用規範嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn