C语言中两个源文件,有两个同名的未初始化全局变量,这时哪个算该变量的定义?
比如:
a.c:
int i;
b.c:
int i;
main.c:
int i;
int main(void){return 0;}
//这时哪个文件中的声明算定义?
C语言中两个源文件,有两个同名的未初始化全局变量,这时哪个算该变量的定义?
版面规则
我们都知道新人的确很菜,也喜欢抱怨,并且带有浓厚的Windows习惯,但既然在这里询问,我们就应该有责任帮助他们解决问题,而不是直接泼冷水、简单的否定或发表对解决问题没有任何帮助的帖子。乐于分享,以人为本,这正是Ubuntu的精神所在。
我们都知道新人的确很菜,也喜欢抱怨,并且带有浓厚的Windows习惯,但既然在这里询问,我们就应该有责任帮助他们解决问题,而不是直接泼冷水、简单的否定或发表对解决问题没有任何帮助的帖子。乐于分享,以人为本,这正是Ubuntu的精神所在。
-
- 帖子: 2284
- 注册时间: 2013-05-26 6:58
- 系统: Debian 9
-
- 帖子: 893
- 注册时间: 2011-02-14 17:46
Re: C语言中两个源文件,有两个同名的未初始化全局变量,这时哪个算该变量的定义?
cs:app 7.6.1
Functions and initialized global variables get strong symbols. Uninitialized global variables get weak symbols.
简单回答是:都有可能Rule 1: Multiple strong symbols are not allowed.
Rule 2: Given a strong symbol and multiple weak symbols, choose the strong symbol.
Rule 3: Given multiple weak symbols, choose any of the weak symbols.