天天看點

C 全局變量 強弱符号

編譯時,編譯器會向彙編器輸出每個全局符号,或強或弱。彙編器會将這些資訊隐含的編碼在可重定向目标檔案中,函數和初始化的全局變量是強符号,未初始化的全局變量是弱符号。連結器對多重定義的處理規則:

1. 不允許有多個同名的強符号

2. 若有一個強符号和多個弱符号同名,則選擇強符号

3. 如果有多個弱符号同名,那麼任意選擇一個。

據以上規則,在C中有同名的函數定義,則編譯時報錯;2,3不會報錯,但是會改變程式的意圖。

是以,定義全局變量并初始化。