1
爲什麼我們不能使用extern使結構在多個.c文件中可訪問?使用extern結構中的C
我知道建議是在.h文件中加入struct的定義,並將.h文件包含到我們使用該結構的每個.c文件中,但爲什麼我們可以使用extern作爲變量,但它不起作用結構?
爲外部變量:
- 定義變量的.c文件
- 外部變量在我們希望它被使用
- 構建兩個.c文件.c文件中,其中一個變量是定義和使用它的地方
但是結構的情況如何?
糾正我,如果我錯了某處。
C設計用於分段編譯,您可以編譯單獨的文件,然後將它們拼合在一起。使用結構涉及訪問其成員的代碼,如果結構定義在很晚之後纔可用,該代碼應該如何發出? – StoryTeller
變量是存儲(運行時)的東西。因此,'extern'和'static'實際上是提示鏈接器給兩個具有相同名稱的存儲器('extern')或不同的存儲器('static')。 (這是你可以想象的 - 標準用不同的文字說出來的......)然而,在編譯時會評估一個類型(例如'struct')。它在使用前不會產生代碼(例如在變量中)。因此,存儲類(例如'extern'和'static')對類型沒有影響。如果您想共享一個類型,請在每個C文件中重新定義它(例如,將其放入每個 – Scheff
... C文件中將包含的頭文件中)。 – Scheff