我有一个包含结构的unsigned char指针。现在我想做以下
unsigned char *buffer ;
//code to fill the buffer with the relavent information.
int len = ntohs((record_t*)buffer->len);
其中record_t结构包含一个名为len的字段。我无法这样做并且收到错误。
error: request for member ‘len’ in something not a structure or union.
我在这里做错了什么?
答案 0 :(得分:5)
C
中的您不能只使用buffer->len
,因为它正在被解析,就好像最终结果buffer->len
被投射到record_t *
一样。尝试
((record_t *)buffer)->len
答案 1 :(得分:3)
尝试((record_t*)buffer)->len
当您要将buffer->len
投射到record_t*,
然后获取buffer
值时,您将record_t
投射到len
这一点。
答案 2 :(得分:3)
如果你确信你做的是正确的事情(虽然这看起来非常糟糕),你只需要让操作员优先:
ntohs( ((record_t*)buffer)->len );
答案 3 :(得分:2)
- >的优先顺序高于演员。适当地添加一些括号。