是否可以在源檔案中寫入所有包含?
假設我們必須撰寫一個名為 sum (sum.h/sum.c) 的模塊,該模塊為所有數字型別提供求和函式。
所有函式宣告都在 sum.h 檔案中完成,如下所示:
uint16_t sum(uint16_t a, uint16_t b); // uint16 sum function
在這種情況下,我必須在 sum.h 中包含 <stdint.h>。
對于任何版本的 C 標準,是否有可能將其包含在源檔案 sum.c 中?
uj5u.com熱心網友回復:
對于任何版本的 c 標準,是否有可能將其包含在源檔案 sum.c 中。
在所有版本的 C 標準中都可以在源檔案中包含標準頭檔案。事實上,這樣做可以說是值得推薦的。
但是,如果您問是否可以避免在 sum.h 中包含標頭,同時仍然依賴 typedef(并且不強制包含 sum.h 的代碼在包含 sum.h 之前包含標準標頭:糟糕的設計!),不沒有可能的 C 標準版本。
uj5u.com熱心網友回復:
就 C 標準而言,任何一個都可以,只要在使用包含的標頭中的功能之前完成每個包含。
除此之外,還有兩種編碼風格:
從 .h 檔案中包含模塊使用的所有頭檔案,以便向用戶記錄該模塊檔案的依賴關系。
通常,告訴代碼的用戶構建程式所需的標頭是一件好事。沒有什么比在你的代碼中包含一些 3rd 方庫更令人沮喪的了,然后得到“神秘的聯結器錯誤:1”,從那里你不知道為什么 - 充其量問題指向包含的庫中的某個地方。
此外,頭檔案本身可能需要訪問包含檔案中的各種型別或常量。
或者,也可以包含 .c 檔案中使用的所有標頭,以隱藏檔案依賴項。
在某些情況下,您正在創建一個庫,并且您只希望用戶與單個頭檔案進行互動,從而將庫的內部檔案結構隱藏起來,類似于私有封裝。您可能不想向呼叫者公開有關您的代碼使用哪些私有標頭的資訊 - 特別是當您將代碼鏈接到單個 lib 二進制檔案(或 DLL 等)時。
使用哪種風格是相當主觀的,如上所述,您可以根據特定專案的要求使用一種風格而不是另一種風格。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/522241.html
標籤:C包括铛包含路径
