为什么要用extern变量解决思路
为什么要用extern变量
首先看extern变量的解释
"extern可以置于变量或者函数前,以表示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义"。
extern关键字的作用我很清楚。
但我不清楚 这种使用,为什么要这么使。比如
a.h文件中
extern int aa;
a.c文件中
int aa=0;
那为什么不直接在a.h文件中
int aa;
而在a.c文件中aa=0;
又或者直接在a.h文件中
int aa=0;
我试了都是可以编译通过的。
(这个问题相当于我在问,雨伞有什么用,因为我是个来自从来不下雨的星球,所以即使看到了文字方面的解释,还是不清楚到底在什么情况下需要用它)
------解决思路----------------------
请遵守one definition rule(ODR, 一次定义规则),思考一下“重复定义”是怎么出来的。
------解决思路----------------------
定义写在头文件中会导致重复定义。
------解决思路----------------------
+1
------解决思路----------------------
extern 是声名语句,当然要放到.h文件里了
extern int A 就是说 A 是外部变量,其他文件可以用这个变量。
比如 你有4个文件 1.h 2.h 1.c 2.c
你在1.h中加入extern int A
在2.h中加入extern A
那么在2.c中你就可以使用A变量了,而且这个A变量就是1.h中的A变量
你可以到百度收 auto, register ,extern,static,哪里有详细的解释
------解决思路----------------------
全局变量要定义在源文件中。需要放在头文件中的有全局变量(不包含静态变量)的声明(注意是声明而不是定义)、全局函数(不包括静态函数的声明)的声明。
若把全局变量定义在头文件中,可能会造成重定义。
------解决思路----------------------
++
首先看extern变量的解释
"extern可以置于变量或者函数前,以表示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义"。
extern关键字的作用我很清楚。
但我不清楚 这种使用,为什么要这么使。比如
a.h文件中
extern int aa;
a.c文件中
int aa=0;
那为什么不直接在a.h文件中
int aa;
而在a.c文件中aa=0;
又或者直接在a.h文件中
int aa=0;
我试了都是可以编译通过的。
(这个问题相当于我在问,雨伞有什么用,因为我是个来自从来不下雨的星球,所以即使看到了文字方面的解释,还是不清楚到底在什么情况下需要用它)
------解决思路----------------------
请遵守one definition rule(ODR, 一次定义规则),思考一下“重复定义”是怎么出来的。
------解决思路----------------------
定义写在头文件中会导致重复定义。
------解决思路----------------------
+1
------解决思路----------------------
extern 是声名语句,当然要放到.h文件里了
extern int A 就是说 A 是外部变量,其他文件可以用这个变量。
比如 你有4个文件 1.h 2.h 1.c 2.c
你在1.h中加入extern int A
在2.h中加入extern A
那么在2.c中你就可以使用A变量了,而且这个A变量就是1.h中的A变量
你可以到百度收 auto, register ,extern,static,哪里有详细的解释
------解决思路----------------------
全局变量要定义在源文件中。需要放在头文件中的有全局变量(不包含静态变量)的声明(注意是声明而不是定义)、全局函数(不包括静态函数的声明)的声明。
若把全局变量定义在头文件中,可能会造成重定义。
------解决思路----------------------
++