读书人

一个很纠结的结构有关问题

发布时间: 2012-03-09 16:54:57 作者: rapoo

一个很纠结的结构问题
定义了一个结构体

C/C++ code
typedef struct tagRequestPersonListPack    {        BYTE cmd;    // 0x21        unsigned short usID;    // 设备ID        unsigned short usReserve;    // 保留字段            } REQUESTPERSONLISTPACK, *PREQUESTPERSONLISTPACK;

在源文件中写入了下列代码.编译无法通过
C/C++ code
            CString str;str.Format("%dusid:%d-usReserver:%d",PREQUESTPERSONLISTPACK->cmd,REQUESTPERSONLISTPACK->usID,REQUESTPERSONLISTPACK->usReserve);            ::AfxMessageBox(str,MB_OK);


错误:
error C2275: 'PREQUESTPERSONLISTPACK' : illegal use of this type as an expression说非法使用一个表达式类型,不晓得到底是怎么搞的

[解决办法]
你的PREQUESTPERSONLISTPACK只是一个结构体(指针)类型,不是一个变量,不能拿来直接用于存放数据
你需要用这个类型说明符先声明一个变量先:PREQUESTPERSONLISTPACK p;
C/C++ code
str.Format("%dusid:%d-usReserver:%d",p->cmd,p->usID,p->usReserve);            ::AfxMessageBox(str,MB_OK);
[解决办法]
PREQUESTPERSONLISTPACK 是类型非变量
[解决办法]
1楼正确。

REQUESTPERSONLISTPACK是类型名,不是变量名

读书人网 >C++

热点推荐