程序编译后,报错重定义,缺少存储类或类型说明符,初始值设定项太多

时间:2023-01-23 03:42:29
我这里有个程序,就3个文件,A.cpp  StdAfx.cpp  StdAfx.h
A.cpp文件里面
#include "stdafx.h"

//变量的申明
...
char sFixKey[30];
char sFixTemp[20];
memcpy(sFixKey,"\0",30);
memcpy(sFixTemp,"\0",20);
DWORD dwvalue;
dwvalue = 1;
...
//下面有几个给注册表里键设置的if语句
if(RegOpenKey(HKEY_CURRENT_USER,(LPCTSTR)strKey,&hResult)==ERROR_SUCCESS)
{
    RegSetValueEx(hResult,(LPCTSTR)"DisableTaskMgr",0L,REG_DWORD,(CONST BYTE*)&dwvalue,sizeof(DWORD));
    RegCloseKey(hResult);
}

//下面有个函数
int xx()
{
  //内容省略了
}

stdafx.cpp文件里面就一句话
#include "stdafx.h"

然后是stdafx.h文件,内容全部在下面
//      are changed infrequently
//

#if !defined(AFX_STDAFX_H__A9DB83DB_A9FD_11D0_BFD1_444553540000__INCLUDED_)
#define AFX_STDAFX_H__A9DB83DB_A9FD_11D0_BFD1_444553540000__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000


#define _WIN32_WINNT 0x0500
#define UNICODE

#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers

#include <afxwin.h>

#include <Winbase.h>

#include <windows.h>


//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_STDAFX_H__A9DB83DB_A9FD_11D0_BFD1_444553540000__INCLUDED_)


我把工程编译后,通过不了,会报错。
error C2501: "memcpy":缺少存储类或类型说明符
error C2365: "memcpy":重定义;以前的定义是“函数”
error C2078:初始值设定项太多
...
error C2501:"dwvalue":缺少存储类或类型说明符
error C2371:"dwvalue":重定义;不同的基类型
...
error C2059:语法错误:“if”
error C2143:语法错误:缺少“;”(在“{”的前面)
error C2447:“{”:缺少函数标题(是否是老式的形式表?)

这个是怎么回事呢? 大虾帮帮

5 个解决方案

#1


memcpy(sFixKey,"\0",30);
memcpy(sFixTemp,"\0",20);
DWORD dwvalue;
dwvalue = 1;

这个你放在哪里了??放在程序外面?????

#2


楼主把代码放在 作用域外了

#3


引用 1 楼 visualeleven 的回复:
memcpy(sFixKey,"\0",30);
memcpy(sFixTemp,"\0",20);
DWORD dwvalue;
dwvalue = 1;

这个你放在哪里了??放在程序外面?????


就是那个A.cpp文件里面
#include "stdafx.h"
然后就是那些变量
包括memcpy(sFixKey,"\0",30);
memcpy(sFixTemp,"\0",20);
DWORD dwvalue;
dwvalue = 1;

#4


memcpy(sFixKey,"\0",30);改成memset(sFixKey,0,30);或者memcpy(sFixKey,"\0",sizeof(char)*30);


#5


引用 2 楼 soswaidao 的回复:
楼主把代码放在 作用域外了
啊  还是不大懂 呵呵  

#1


memcpy(sFixKey,"\0",30);
memcpy(sFixTemp,"\0",20);
DWORD dwvalue;
dwvalue = 1;

这个你放在哪里了??放在程序外面?????

#2


楼主把代码放在 作用域外了

#3


引用 1 楼 visualeleven 的回复:
memcpy(sFixKey,"\0",30);
memcpy(sFixTemp,"\0",20);
DWORD dwvalue;
dwvalue = 1;

这个你放在哪里了??放在程序外面?????


就是那个A.cpp文件里面
#include "stdafx.h"
然后就是那些变量
包括memcpy(sFixKey,"\0",30);
memcpy(sFixTemp,"\0",20);
DWORD dwvalue;
dwvalue = 1;

#4


memcpy(sFixKey,"\0",30);改成memset(sFixKey,0,30);或者memcpy(sFixKey,"\0",sizeof(char)*30);


#5


引用 2 楼 soswaidao 的回复:
楼主把代码放在 作用域外了
啊  还是不大懂 呵呵