“技术平台:VS2005平台”
可以在"Global.h"中定义一个变量如下(以下是Global.h文件中的全局内容):
////////////////////////////////////Global.h_BEGIN///////////////////////////////////////////////
#pragma once
class Global
{
public:
Global(void);
public:
~Global(void);
};
extern int m_iVar;
////////////////////////////////////Global.h_END/////////////////////////////////////////////////
然后在"Global.cpp"中为这个变量赋初值,如下(以下是Global.cpp文件中的全局内容):
////////////////////////////////////Global.cpp_BEGIN///////////////////////////////////////////////
#include "StdAfx.h"
#include "Global.h"
Global::Global(void)
{
}
Global::~Global(void)
{
}
int m_iVar = 100;
////////////////////////////////////Global.cpp_END/////////////////////////////////////////////////
这样,如果我们想在其它文件中使用这个外部变量,只需引入Global.h,即:
#include "Global.h"
然后,直接使用被extern修饰的m_iVar即可。
注意:
(1)当在外部文件中使用m_iVar时,由于在Global.cpp文件中已经被初始化为100,
所以在外部文件中使用m_iVar的时候,这个变量所持有的值也是100;
(2)m_iVar在外部文件中使用时是可以被修改的,而且,它所起的作用类似于一个静态
变量,即它可以保存上一次的修改,而不是仍然持有默认值;
(3)一定要注意引用那个头文件:#include "Global.h"。
//////////////////////////////////////////////////////////////////////////////////////////////////////////
下面是在Ctest_003View.cpp中对于这个外部变量的使用示例:
void Ctest_003View::OnDraw(CDC* pDC)
{
Ctest_003Doc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
if (!pDoc)
return;
// TODO: 在此处为本机数据添加绘制代码
CString str;
for(int i = 0; i < 5; i++)
{
str.Format(_T("i = %d; m_iVar = %i"), i, m_iVar);
m_iVar += i * 100;
pDC->TextOutW(i*50,i*50,str,str.GetLength());
}
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
运行结果如图所示: