hur.cn - 华软网

 热门搜索

关于全局变量

  作者:未知    来源:网络    更新时间:2011/5/30
我在stdafx.h中定义了全局变量,具体的代码如下
C++">//stdafx.h
extern unsigned char g_VehicleLocation;
//stdafx.cpp
unsigned char g_VehicleLocation;
//communicate.h
void SendBuffer();
friend void startComm(LPVOID param);//友元函数
//communicate.cpp
void CCommunicate::SendBuffer()
{
//在这个函数中会用到g_VehicleLocation变量
}
void startComm(LPVOID param)
{
CCommunicate* p = (CCommunicate*)param;
if (p->m_operationType == 0)
p->SendBuffer();
else;
delete p;
}

在MainFrm.cpp中读取xml配置文件,得到g_VehicleLocation的值,然后启动线程

C++">	CCommunicate* p2 = new CCommunicate;
p2->m_operationType = 0;
p2->hwnd = m_hWnd;
CWinThread* pThread2 = AfxBeginThread((AFX_THREADPROC)startComm,(LPVOID)p2,-1);
我本来读取的xml配置文件中g_VehicleLocation为2,可是现在到sendBuffer函数中变成了0,很纳闷,没有别的地方修改它啊?请大家帮忙看看,谢谢~~
---华软 网友回答---
g_VehicleLocation变成了在stdafx.h中定义的值。。
---华软网友回复---
这是不可能的。

你看看是不是你读取xml是在sendBuffer之后?或者读取xml失败了。

又或者是不是你用的两个变量名字不一样?
---华软网友回复---
你再看看有没有地方改到了,没地方改不会出现这种情况,就你上边的代码没看出有什么来
---华软网友回复---
你的全局变量定义的没有问题,应该是你的g_VehicleLocation使用的有问题;
可能是你调用g_VehicleLocation不是按你想要的顺序调用的,或者你给g_VehicleLocation赋值的函数没有执行成功(你应该加上相应的判断)
---华软网友回复---
跟踪一下MainFrm.cpp中读取xml配置文件,给g_VehicleLocation赋值的语句,看g_VehicleLocation是否被正确赋值.      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。