全局变量如何使用?

XueBoy163 2003-01-28 01:22:57
我在类外申明了两个全局变量结果报错:
INK : warning LNK4075: ignoring /INCREMENTAL due to /FORCE specification
White MagicDlg.obj : warning LNK4006: "char * szPath" (?szPath@@3PADA) already defined in Table.obj; second definition ignored
White MagicDlg.obj : warning LNK4006: "unsigned long dwRegWork" (?dwRegWork@@3KA) already defined in Table.obj; second definition ignored
Debug/White Magic.exe : warning LNK4088: image being generated due to /FORCE option; image may not run
为什么?
怎么办?
...全文
44 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
liuxianhui 2003-01-28
  • 打赏
  • 举报
回复
在某一个.c中应该定义
char szPath[MAX_BUFFER];
DWORD dwRegWork;
DoubleJiang 2003-01-28
  • 打赏
  • 举报
回复
把放在.h中
extern char szPath[MAX_BUFFER];
extern DWORD dwRegWork
.C中这样
char szPath[MAX_BUFFER];
DWORD dwRegWork
E17 2003-01-28
  • 打赏
  • 举报
回复
有没有#ifndef XXX
#define XXX
#endif
Zark 2003-01-28
  • 打赏
  • 举报
回复
如果已经注意到了extern的问题,还出现错误,那么clean all再rebuild all,多半是你的那个table.cpp文件的问题!
AthlonxpX86 2003-01-28
  • 打赏
  • 举报
回复
全局变量应该声明到全部类的外面,
XueBoy163 2003-01-28
  • 打赏
  • 举报
回复
extern char szPath[MAX_BUFFER];
extern DWORD dwRegWork;
就是这两行申明。
下面:
void CRegistryScan::OnRegScanStart()
{
dwRegWork=true;
m_pthdScan=::AfxBeginThread(RegScan ,this->m_hWnd ,NULL ,NULL ,
NULL);




}


UINT CRegistryScan::RegScan(LPVOID pParam)
{

HKEY hKey[1]=
{
HKEY_CLASSES_ROOT
};
CStringArray str;
str.Add("HKEY_CLASSES_ROOT");
// CString* pstrPath;

// pstrPath=&m_strScanPath;

CRegistryScan* pDlg;
HWND hWnd=(HWND)pParam;
pDlg=(CRegistryScan *)CRegistryScan::FromHandle((HWND)pParam);

::SetTimer(hWnd,IDM_SCAN_REFRESH,500,NULL);



EnmuKey(&hKey[0],1,str[0] ,(HWND)pParam);




//if(CWhiteMagicDlg::IsWindowNT(NULL,NULL))



// pDlg->m_strScanPath="Finish!!";
::strcpy(szPath,"Finish!!");
// pDlg->UpdateData(false);



return true;

}

void CRegistryScan::OnRegScanEnd()
{
dwRegWork=false;

}

DWORD CRegistryScan::EnmuKey(PHKEY phKey, DWORD Key, CString RootKey, HWND hWnd)
{
HKEY hKey;
CString strKey,strValue,strPath,str;
DWORD i,dwKey,dwValue,dwSize=MAX_BUFFER;
CStringList lstValue,lstKey;
char szKey[MAX_BUFFER-1];
POSITION pos;
// CRegistryScan* pDlg;

strPath=RootKey;
strPath+="\\";
// pDlg=(CRegistryScan *)CRegistryScan::FromHandle(hWnd);
if(!dwRegWork)
return false;

for(Key;Key>0;Key--)
{
::RegQueryInfoKey(*phKey,NULL,NULL,NULL,&dwKey,NULL,
NULL,&dwValue,NULL,NULL,NULL,NULL);
// IsEnmu
for(i=0;i<dwKey;i++)
{
::RegEnumKeyEx(*phKey,i,szKey,&dwSize,
NULL,NULL,NULL,NULL);
dwSize=MAX_BUFFER;
lstKey.AddTail(szKey);
}
if(dwKey)
{
pos=lstKey.GetHeadPosition();
strKey=lstKey.GetHead();
for(i=0;i<=dwKey;i++)
{
::RegOpenKey(*phKey,strKey,&hKey);
str=strPath;
str+=strKey;
::strcpy(szPath,str);
EnmuKey(&hKey,1,str,hWnd);
::RegCloseKey(hKey);
strKey.Empty();
if(i<dwKey)
strKey=lstKey.GetNext(pos);


}
}
}
return true;

}

void CRegistryScan::OnTimer(UINT nIDEvent)
{
m_strScanPath=szPath;

if(!dwRegWork)
{
::KillTimer(m_hWnd,IDM_SCAN_REFRESH);
m_strScanPath="Finish!";
}
UpdateData(false);



CPropertyPage::OnTimer(nIDEvent);
}
AthlonxpX86 2003-01-28
  • 打赏
  • 举报
回复
show me your code

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧