关于C++中typedef struct

typedef struct
{
DWORD SerialNo;//流水号
WORD UserID;//用户编号
BYTE CMDType;//回读 0x00-无效 0x01-设置 0x02-回读 只有在设置参数时有效,其他命令固定为0x00
BYTE Reserved[2];//保留
BYTE CMD;//指令
}
LMMTP_HEAD_DATA, * PLMMTP_HEAD_DATA;

上面这段代码什么意思。我知道typedef struct是可以定义别名的,可是为什么下面的PLMMTP_HEAD_DATA前还有星号?
这个是写在dll工程里的。有一个函数需要PLMMTP_HEAD_DATA类型的形参,这个函数被vb调用,那么在vb中应当如何声明这个函数?

* PLMMTP_HEAD_DATA 这个是指针类型的别名,你可以直接用这个别名定义指向这个结构体的指针,如:
PLMMTP_HEAD_DATA p;
这个语句的作用和这个是一样的:
LMMTP_HEAD_DATA *p;

那个函数PLMMTP_HEAD_DATA类型形参的位置,就直接写上PLMMTP_HEAD_DATA好了,这就是代表一个类型追问

这个是写在dll工程里的。有一个函数需要PLMMTP_HEAD_DATA类型的形参,这个函数被vb调用,那么在vb中应当如何声明这个函数?

追答

void func(PLMMTP_HEAD_DATA);

就这么声明,返回值,其它形参自己改

追问

不是啊,我说编译成dll后在vb里声明这个函数

追答

编译成dll后,你加载这个dll,在vb里不是能直接用了的吗?为什么还要声明呢,直接传递PLMMTP_HEAD_DATA类型的实参调用函数不是就可以了吗

追问

嗯。你没用vb调过吧。

追答

没用过vb

温馨提示:内容为网友见解,仅供参考
第1个回答  2012-09-09
同时定义一个指针类型啊。。。追问

那么PLMMTP_HEAD_DATA类型定义出来的对象是什么东东

追答

简单理解的话
类似一次定义了
int p和int *p

相似回答