2011-05-23 65 views
6

我聽說你不應該在頭文件中定義任何東西,因爲有多個定義的可能性,但是如果你有包括守衛,這不應該發生,對吧?還有什麼其他原因可以將變量添加到變量中?extern變量 - 爲什麼?

回答

12

包括警衛只是防止在一個單獨的translation unit(又名編譯單元)中包含多個頭文件。這並沒有解決鏈接時來自單獨翻譯單元的多個定義的問題。因此,您只應將聲明放入源(.c)文件的標頭(.h)文件和定義中。

+0

啊,我現在明白了。謝謝 :)。 – someguy 2011-05-23 21:37:26

1

您通常聲明當變量在一個源文件(更具體地,一個翻譯單元)被定義,並且在另一箇中引用在頭文件extern變量。