多文档工程中,怎样在不同文档中共享同一个变量?

就是打开第二个文档后要用到第一个文档中的变量a,怎么做?

定义一个头文件1.h被1.c和2.c包含1.h
extern T a;

1.c
#include<1.h>
/*全局变量*/
T a;

2.c
#include<1.h>追问

是MFC的,我在运行程序时,每打开一个文档都要用到前一个文档中的一个变量,在View类中设置了全局变量v1,v2,文档的值赋给v2,v=v1-v2,然后v1=v2,再打开新文档后,v1总是等于初始化的0,怎么办?

追答

可否清晰点,给出v1,v2, view ,文档,的大致定义?以及如何初始化v1

追问

view是MFC的视类,每个文档(对应不同时刻的数据)中包含一个位置信息,我要求速度,所以在视类中定义全局变量v1,v2初始化为0,第一个文档的位置信息赋给v2,打开下一个文档用位置信息赋给v1,v2-v1=速度,v1=v2,再打开下一个文档,重复以上过程。(第一个文档不计算速度)。可是每次新打开文档,v1都变为了0,怎么回事?

追答

是这么定义的么?
view.h
class xxview{ }
extern Point v1,v2;

view.cpp

Point v1,v2;
#incluce

doc.cpp
#incluce

追问

view.h
float v1,v2,v;

view.cpp
构造函数中:v1=0.0;v2=0.0;v=0.0;
一个函数中:v2=变量值
另一个函数中:v=v1-v2; v1=v2;

这样不行吗?为什么每次打开新文档,v1都是0?帮帮忙吧,新手很着急啊,多谢啦!

追答

打开新文档?
是指的新建doc类?

追问

就是在MFC的视类窗口中点击“打开”,读取一个新文档的数据。

追答

view.h
extern float v1,v2,v;
view.cpp
全局区 float v1=0,v2=0,v=0;
构造函数中:去掉(//v1=0.0;v2=0.0;v=0.0;)

追问

extern float v1,v2,v;出现错误: error C2071: “CAView::v1”: 非法的存储类,怎么办呢?

追答

extern float v1,v2,v;是放在全局区,不是放在CAView成员区

追问

非常感谢!虽然不太明白原理,但是问题解决了!

追答

估计是这样情形:
你开始是定义v1为成员,
而每次打开新文档,估计是新建了一个view对象,成员是随对象的,所以每次你使用的都是新的CAView对象的v1,而不是同一个v1。

温馨提示:答案为网友推荐,仅供参考
相似回答