一个很纠结的结构问题
定义了一个结构体
- 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是类型名,不是变量名