0

我有一个包含结构的无符号字符指针。现在我想做以下事情

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

4 回答 4

5

inC你不能只是 take buffer->len,因为它被解析为好像最终结果buffer->len被强制转换为 a record_t *。尝试

((record_t *)buffer)->len
于 2011-10-02T23:05:00.093 回答
3

尝试((record_t*)buffer)->len

当您想要做的是转换为 a然后获得它的值时,您正在转换buffer->len为 a 。record_t*,bufferrecord_tlen

于 2011-10-02T23:05:24.570 回答
3

如果您确信自己在做正确的事情(尽管这看起来很骇人听闻),您只需要正确设置运算符优先级:

ntohs( ((record_t*)buffer)->len );
于 2011-10-02T23:05:43.853 回答
2

-> 的优先级高于强制转换。适当添加一些括号。

于 2011-10-02T23:05:53.747 回答