请高手帮忙:如何将(void *)转化成结构体指针类型,谢谢

bvk2008 2004-08-31 11:39:30
typedef struct{
HANDLE filebg;
DWORD TotalSIZE;
DWORD TemLocation;
}FILEHEADER,*PFILEHEADER;

void closeuserip(void * hDB)
//hDB传进来的时候是PFILEHEADER类型
//在函数内部需要把它再转化成PFILEHEADER类型
{
PFILEHEADER temhDB;

}
如何写,谢谢。
...全文
819 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
program2100 2004-08-31
  • 打赏
  • 举报
回复
晕,强制转换就可以的。
lemon520 2004-08-31
  • 打赏
  • 举报
回复
void closeuserip(void * hDB)
{
PFILEHEADER temhDB=(PFILEHEADER)hDB;
}
myj_rn 2004-08-31
  • 打赏
  • 举报
回复
用强制转换即可,c/c++都支持强制转换
void func_name(void *p)
{
struct_type *data = (struct_type *)p;
......
}
注意:p不能为NULL,并且其中数据格式至少要部分与struct_type匹配
darkstar21cn 2004-08-31
  • 打赏
  • 举报
回复
static_cast ()
rwdx 2004-08-31
  • 打赏
  • 举报
回复
PFILEHEADER temhDB = (PFILEHEADER)temhDB
bvk2008 2004-08-31
  • 打赏
  • 举报
回复
static_cast是什么意思?能告诉一下吗?编译提示未定义。
小弟刚工作不久,谢谢大家的帮忙。
bvk2008 2004-08-31
  • 打赏
  • 举报
回复
强制转换我也知道,但为什么总提示invailid handle.而且temhDB转换后数据与我传进来的内容不一样。为什么?
真的很感谢大家,谢谢。
aryak 2004-08-31
  • 打赏
  • 举报
回复
FILEHEADER* temhDB=static_cast<PFILEHEADER*>hDB;
aryak 2004-08-31
  • 打赏
  • 举报
回复
这个结构可以看作是一个接口,
数据通过指针传递,在用这个接口转换

typedef struct{
HANDLE filebg;
DWORD TotalSIZE;
DWORD TemLocation;
}FILEHEADER,*PFILEHEADER;

void closeuserip(void * hDB)
//hDB传进来的时候是PFILEHEADER类型
//在函数内部需要把它再转化成PFILEHEADER类型
{
PFILEHEADER* temhDB=static_cast<PFILEHEADER*>hDB;

}
deepWATERblue 2004-08-31
  • 打赏
  • 举报
回复
UP.

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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