標頭檔案被重複包含究竟有哪些危害?

時間 2021-05-30 23:57:23

1樓:雍正王朝

我覺得是編譯器設計的問題,當重複包含標頭檔案之後,有可能會出現重複定義變數,編譯器在進行編譯的時候對於重複定義的變數不知道呼叫哪乙個, 比如定義了乙個 int a = 0; 又重複定義了乙個int a = 1; 如果使用了這個a, 那麼編譯器就不知道你使用的a等於0還是等於1。所以編譯器不允許出現重複定義,也就不允許重複包含標頭檔案了。

2樓:

上面說的大部分問題根本無法通過編譯,很容易解決。

如果寫法不好,造成不被編譯發現的問題才是頭大,例如:在標頭檔案中定義了全域性靜態變數,編譯後實際在每個引用此標頭檔案的obj中都會有乙份,邏輯就混亂了。

3樓:Kent Zhang

標頭檔案被重複包含這種問題還算好解決的了。

標頭檔案A裡面用到了標頭檔案B裡面定義的乙個結構體。

標頭檔案B裡面用到了標頭檔案A裡面定義的乙個結構體。

這種情況多了才叫心碎。

4樓:IanJiang

記憶猶新的問題啊。

去年上C++課的時候有個同學課上問了這個問題。

老流氓教授這麼回答:你用過的套套肯定不會翻過來再用一遍。。

從此我再也不會重複包含標頭檔案了。

摺疊我吧。

C C 不包含任何標頭檔案 自己寫的可以 怎麼實現需要的功能?

蘇凡 sfrP1 0x90 sbit P17 P1 7 void delay unsigned charj while j void main void 沒有包含任何標頭檔案。功能是閃亮乙個燈。執行在8051系列處理器上。keil編譯通過。系統對於F103以下的都太奢侈了。 朱涵俊 不用標頭檔案是可...

為什麼C 中,含有函式宣告的標頭檔案應該被包含在定義函式的原始檔中?

如果,你在second.cpp裡面的function 1 裡呼叫了function 2 就會編譯不通過。並且,會提示你找不到function 2的定義。要不你試一下呢? 大JoeJoe 在實際的專案程式設計中 cpp檔案中定義的函式分為兩種,一種是對外提供介面供外部呼叫的,一種是特定功能封裝成乙個函...

為什麼要有標頭檔案?

黃達 為什麼要有標頭檔案?黃達 為什麼C C 要分為標頭檔案和原始檔?能不能用.c自動生成標頭檔案?如果你想寫在這個.h裡的全部資訊都在這個.c裡,那就能,否則就不能 廢話 所以多數情況下是不能。 劉文麟 題主的意思就是為什麼不能在正式編譯開始之間增加乙個過程 掃瞄所有.c檔案,然後把其中的函式定義...