编译时,编译器会向汇编器输出每个全局符号,或强或弱。汇编器会将这些信息隐含的编码在可重定向目标文件中,函数和初始化的全局变量是强符号,未初始化的全局变量是弱符号。链接器对多重定义的处理规则:
1. 不允许有多个同名的强符号
2. 若有一个强符号和多个弱符号同名,则选择强符号
3. 如果有多个弱符号同名,那么任意选择一个。
据以上规则,在C中有同名的函数定义,则编译时报错;2,3不会报错,但是会改变程序的意图。
因此,定义全局变量并初始化。
编译时,编译器会向汇编器输出每个全局符号,或强或弱。汇编器会将这些信息隐含的编码在可重定向目标文件中,函数和初始化的全局变量是强符号,未初始化的全局变量是弱符号。链接器对多重定义的处理规则:
1. 不允许有多个同名的强符号
2. 若有一个强符号和多个弱符号同名,则选择强符号
3. 如果有多个弱符号同名,那么任意选择一个。
据以上规则,在C中有同名的函数定义,则编译时报错;2,3不会报错,但是会改变程序的意图。
因此,定义全局变量并初始化。