gcc:错误:请求成员'rlen'不是结构或联合

时间:2011-10-02 23:02:52

标签: c pointers gcc gcc-warning

我有一个包含结构的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.

我在这里做错了什么?

4 个答案:

答案 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)

- >的优先顺序高于演员。适当地添加一些括号。