2013-04-07 61 views
1

這個問題是從理想的角度來看的。 //向前聲明makefiles和標題依賴關係,重訪

我一直在學習makefiles的基礎知識,我發現自己想知道與here有關的頭文件相關性問題。從實際的角度來看,我很高興有解決方案可以解決標題依賴問題。然而,考慮一下這個問題,我發現自己問爲什麼一個頭文件依賴將會影響一個編譯單元。獨佔影響編譯單元。在假設下(參見前向聲明),定義包含在頭文件中並且實現以源單位定義,是否有理由修改頭文件而不修改相應的源文件?如果不是,那麼爲什麼重新編譯依賴源單元更重要,因爲定義修改本身對程序執行沒有影響?這只是一個問題,可以更快地識別接口定義中的錯誤?

回答

1

(準確地說,聲明包含在頭文件和定義(即實現)是在源文件中,但是這只是術語。)

「有什麼理由,修改頭文件是值得的,而不用修改相應的源文件?「

是的。例如,將成員從public更改爲private。此外,多個源文件可以包含給定的頭文件,因此對頭的更改可能需要對其中一個進行更改,而不是另一個。例如,在類中添加/刪除/重命名數據成員可能不需要對類實現進行任何更改,但仍需要更改使用該類的其他源代碼。

即使源文件根本沒有改變,如果頭文件已經改變,仍然可以在邏輯上重新編譯它。例如,添加/刪除數據成員會改變類的大小,這意味着任何使用該類實例的代碼都必須調整爲其分配的內存量。

+0

我沒有想過班級規模的情況。如果在類定義更改影響類大小時不考慮頭依賴關係,則可能會影響結果可執行文件,如果不是所有相關CU都重新編譯的話。謝謝! – jwalk 2013-04-07 17:44:30