|
我在用VC做一个单文档的工程proj。
包含mainfrm.cpp;proj.cpp;projDoc.cpp;projView.cpp等文件。
在工程中包含了一个定义全局变量的头文件:"globlevariable.h"
在上面这个头文件中定义了结构体,并声明了相应的全局变量:
///
.....
struct g_sCtrldata
{
struct g_sCtrldata* pNext;
struct g_sCtrldata* head;
double x;
double y;
double dy;
double ddy;
}; //结构体定义
g_sCtrldata * g_ContrldataHipA;//全局变量声明
.....
//
然后我在Mainfrm.cpp中include这个头文件,并且对全局变量* g_ContrldataHipA赋值。
Mainfrm.cpp:
///
#include "globlevariable.h"
g_ContrldataHipA=(g_sCtrldata*)malloc(sizeof(g_sCtrldata)*100);
.....
for (int i=0;i<100;i++)
{ (g_ContrldataHipA+i)->pNext=pI+1;
(g_ContrldataHipA+i)->x=*(g_dOutX+i);
(g_ContrldataHipA+i)->y=*(g_dOutY+i);
(g_ContrldataHipA+i)->dy=*(g_dOutDY+i);
(g_ContrldataHipA+i)->ddy=*(g_dOutDDY+i);
(g_ContrldataHipA+i)->head=g_ContrldataHipA;
}
...
以上都很顺利。
但是当我希望用曲线显示g_ContrldataHipA数组中的值时,需要在projView.cpp中访问并修改。这时问题出来了:
使用g_ContrldataHipA,编译时提示错误,g_ContrldataHipA没有定义。
我用extern g_ContrldataHipA也不行。
但是globlevariable.h中其他的非结构体的全局变量就可以直接使用,比如双精度变量,整型变量等等。
后来想到在projView.cpp中加上#include "globlevariable.h"
但这时提示了几百个错误,因为"globlevariable.h"已经在main.obj中定义了。:error LNK2015: "struct g_sCtrldata * g_Contrldata" (?g_Contrldata@@3PAUg_sCtrldata@@A) already defined in MainFrm.obj
请高手来抱我解决一下这个问题,难道结构体在不同的类中作为全局变量传递不可以吗?
|
|