改写别人的c代码为C++,但是如下语句在C++里面报错:
声明结构体:
typedef struct _HZPH {
TCHAR szHZ[2*(MAX_PHRASE_LEN+1)];
DWORD dwAttrib;
struct _HZPH __based(lpMapFileBase) *lpNext;//
} HZPH, FAR *LPHZPH;typedef struct _KEYPH {
SHORT wLen;
BYTE abKey[MAX_PHRASE_LEN+1];
HZPH __based(lpMapFileBase) *lpHZPH;//
struct _KEYPH __based(lpMapFileBase) *lpNext;//
} KEYPH, FAR *LPKEYPH;
如下使用:
LPKEYPH lpKeyPH;
LPHZPH lpHZPH;
.................
lpKeyPH->lpHZPH=(LPHZPH)((LPBYTE)lpMapFileBase+
dwBaseOffset+dwMapFileOffset);
提示如下错误:
c:\documents and settings\all users\documents\imedemo\dictctrl.cpp(164) :
error C2440: '=' : cannot convert from 'struct _HZPH *' to 'struct _HZPH
__based(lpMapFileBase) *'哪位遇到过啊?
声明结构体:
typedef struct _HZPH {
TCHAR szHZ[2*(MAX_PHRASE_LEN+1)];
DWORD dwAttrib;
struct _HZPH __based(lpMapFileBase) *lpNext;//
} HZPH, FAR *LPHZPH;typedef struct _KEYPH {
SHORT wLen;
BYTE abKey[MAX_PHRASE_LEN+1];
HZPH __based(lpMapFileBase) *lpHZPH;//
struct _KEYPH __based(lpMapFileBase) *lpNext;//
} KEYPH, FAR *LPKEYPH;
如下使用:
LPKEYPH lpKeyPH;
LPHZPH lpHZPH;
.................
lpKeyPH->lpHZPH=(LPHZPH)((LPBYTE)lpMapFileBase+
dwBaseOffset+dwMapFileOffset);
提示如下错误:
c:\documents and settings\all users\documents\imedemo\dictctrl.cpp(164) :
error C2440: '=' : cannot convert from 'struct _HZPH *' to 'struct _HZPH
__based(lpMapFileBase) *'哪位遇到过啊?
解决方案 »
- Windows下如何改写目标进程的窗口函数来注入DLL
- 关于Dialog的任务框图标
- 求助,请各位帮忙哦!
- 如何不使用ocx在窗体上的显示网页,或在dll里边的窗体上使用ocx(在dll里边的窗体上使用ocx会出错,exe就没事,不知为什么)
- 怎么使鼠标超出窗体时,OnMouseMove继续捕捉鼠标的坐标?
- 大侠们,狂入!!关于数据集
- VC7.1+MFC+COM问题讨论贴,300分会友
- 有关文件的处理问题
- 请教使用ado在access2000中保存图片数据的问题!分不够可以再加!
- SetPolyFillMode()的参数WINDING和ALTERNATE分别怎么用?
- 请问如何实现才程序启动时等待画面的制作?
- 元月8日,纪念周 恩 来总理逝世卅周年!
该关键字主要用来解决一些和共享内存有关的问题,它允许指针被定义为从某一点开始算的32位偏移值,而不是内存种的绝对位置
举个例子:typedef struct tagDEMOSTRUCT {
int a;
char sz[10];
} DEMOSTRUCT, * PDEMOSTRUCT;HANDLE hFileMapping = CreateFileMapping(...);
LPVOID lpShare = (LPDWORD)MapViewOfFile(...);DEMOSTRUCT __based(lpShare)* lpDemo;上面的例子声明了一个指针lpDemo,内部储存的是从lpShare开始的偏移值,也就是lpHead是以lpShare为基准的偏移值.
上面的例子种的DEMOSTRUCT只是随便定义的一个结构,用来代表任意的结构.虽然__based指针使用起来非常容易,但是,你必须在效率上付出一定的代价.每当你用__based指针处理数据,CPU都必须
为它加上基地址,才能指向真正的位置.
强制转换
lpKeyPH->lpHZPH=('struct _HZPH __based(lpMapFileBase) *)((LPBYTE)lpMapFileBase+
dwBaseOffset+dwMapFileOffset);