急问:c++ 下全局变量的使用问题

来源:百度知道 编辑:UC知道 时间:2024/05/28 21:20:43
根据说明,凡是不在类中和函数中定义的变量都是全局变浪。
现在遇到一个麻烦,不知道大家怎么解决的:

比如我在a.h中定义全局变量。 int c
在b.cpp中包含了a.h. 那么link的时候就会出错。(算是多重定义)
(注:没有用extern的办法。因为a.h中还有在b.cpp中需要调用的类, 所以使用 Include “a.h")

如果声明成static int c. 那么就不能再b.cpp中改变变量值。

请问应该如何解决。

如果你在b.cpp定义的int c 不是全局变量的话,是不会有错的

如果你在 a.h中 定义了int c;
在 b.cpp中

#include"a.h"
int c;
main()
{ ....}这样就错了,因为重复定义,如果是在函数里面是没问题的,是局部变量

如果声明成static int c 在b.cpp中是可以改变变量值。

static 表示静态变量,
比如在"类"定义static int c
则 c 是一直存在的,你创建的每个对象都公用这个 c ;
每个对象都可以改变他

如果 不加 static ;则每个对象都创建自己的变量

extern