所以,我們使用#include
告訴編譯器/鏈接器在哪裏找到一個類的所有相關代碼。把包括在所有正確的地方
看一看這樣的:
ClassC.h:
#include "ClassA.h";
ClassD.h:
#include "ClassC.h"
比方說,我們在ClassD
使用ClassA
,但在某種程度上這是沒有辦法連接到ClassC
。我們通過包含ClassC
隱含地包含它,所以不會引發錯誤。但是,如果代碼更改並且不再需要ClassC
(並且因此我們刪除#include "ClassC.h"
),我們會得到未定義的參考錯誤,因爲ClassA
現在未被引用。
有沒有辦法讓編譯器/鏈接器獨立查看每個* .cpp和分配的* .h,而不需要查看包含的.h文件?
如果是這樣的話,它不會查看ClassC.h
並且看到它包含ClassA.h
,但會拋出一個錯誤或至少一個警告,告訴我我沒有包含ClassA.h
。這是更有意義的,因爲,只要類ClassD
知道,ClassA
和ClassC
彼此沒有任何關係(在設定假設下,我使用ClassA
而不依賴於ClassC
)。
我認爲用這種方式編寫的代碼會更穩定,更具彈性。不是嗎?
另外,比方說,我們建立一個項目,它的工作原理。如果我們之前在代碼中引用某個類(X)比之前引用的類(X),那麼如果它正在使用某個其他類(Y),該程序中該點之間的某個其他源包含其他類該類以前的第一次出現。如果我們更緊密地包含每個明確使用它的頭文件,那麼這些錯誤永遠不會出現。
我知道我可以自己跟蹤所有這些,但是在大型項目中甚至中型項目中可能會錯過幾個或更多的項目。此外,有錯誤/警告會讓管理變得更容易。
我知道我有點複雜,但對我來說這似乎是一個很好的做法。
這甚至是一個好主意,它可以以某種方式設置在編譯器/鏈接器選項(例如CodeBlocks中的GNU gcc編譯器)?
你應該檢查出包括警衛。 HTTPS://en.wikipedia。org/wiki/Include_guard – Gavin
包括守衛非常好,並且阻止您在項目中包含相同的兩件事,我知道。我希望能夠在我的代碼中包含10個不同的地方,儘管編譯器/鏈接器只使用第一個地方。 – Karlovsky120
我既不明白你想要解決什麼問題,也不知道你提出的解決方案 – user463035818