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

liv*_*hak 0 c gcc pointers gcc-warning

我有一个unsigned char指针,其中包含一个结构.现在我想要执行以下操作

unsigned char *buffer ;

//code to fill the buffer with the relavent information.

int len = ntohs((record_t*)buffer->len);
Run Code Online (Sandbox Code Playgroud)

其中record_t结构包含一个名为len的字段.我无法这样做并且收到错误.

error: request for member ‘len’ in something not a structure or union.
Run Code Online (Sandbox Code Playgroud)

我在这做错了什么?

Foo*_*Bah 5

C你不能只是采取buffer->len,因为它被解析,好像最终的结果buffer->len被强制转换为record_t *.尝试

((record_t *)buffer)->len
Run Code Online (Sandbox Code Playgroud)

  • 我想补充一点,原因是` - >`具有比强制转换更高的优先级,并且OP应该学习C运算符优先级表,或者使用更多括号. (2认同)