編譯時,編譯器會向彙編器輸出每個全局符号,或強或弱。彙編器會将這些資訊隐含的編碼在可重定向目标檔案中,函數和初始化的全局變量是強符号,未初始化的全局變量是弱符号。連結器對多重定義的處理規則:
1. 不允許有多個同名的強符号
2. 若有一個強符号和多個弱符号同名,則選擇強符号
3. 如果有多個弱符号同名,那麼任意選擇一個。
據以上規則,在C中有同名的函數定義,則編譯時報錯;2,3不會報錯,但是會改變程式的意圖。
是以,定義全局變量并初始化。
編譯時,編譯器會向彙編器輸出每個全局符号,或強或弱。彙編器會将這些資訊隐含的編碼在可重定向目标檔案中,函數和初始化的全局變量是強符号,未初始化的全局變量是弱符号。連結器對多重定義的處理規則:
1. 不允許有多個同名的強符号
2. 若有一個強符号和多個弱符号同名,則選擇強符号
3. 如果有多個弱符号同名,那麼任意選擇一個。
據以上規則,在C中有同名的函數定義,則編譯時報錯;2,3不會報錯,但是會改變程式的意圖。
是以,定義全局變量并初始化。