[英]Cast to the pointer to array of structs
我有一个指向结构数组的指针:
struct myStruct (*str_ptr)[];
我尝试为它分配一个我在另一个类型为 (uint8_t*) 的指针中拥有的值,当我这样做时:
uint8_t* ptr2;
ptr2 = (some memory adress);
str_ptr = ptr2;
我收到一条警告: "assignment to 'myStruct (*)[]' {aka 'struct <anonymous> (*)[]'} from incompatible pointer type 'uint8_t *' {aka 'unsigned char *'} [-Wincompatible-pointer-types]"
该问题的明显解决方案是将ptr2转换为str_ptr的类型 ... 我尝试了很多配置,但我能想到的所有转换都会在编译器错误中返回。 任何人都知道如何将指针转换为“指向结构数组的指针”?
编辑:抱歉,我将尝试描述我在这里要做的事情。 我有一些关于外部 memory 的数据,首先我为它声明 memory:
ptr2 = malloc(data_size);
然后使用 memcpy 用一些数据填充它(这就是为什么我希望它是 (uint8_t*) 类型)。 最后,我尝试将指向结构数组的指针分配给数据开始的位置,这样我就可以通过键入(*str_ptr)[3].field
来访问它。
指向 arrays 的指针可能会出现棘手的 C 语法问题。 但是,在您引用的消息中给出了避免编译器警告所需的强制转换类型的非常强烈的提示: "assignment to 'myStruct (*)[]'
......
但是,该类型并不十分完整,因为您还需要struct
关键字。
因此,您的无警告演员分配将是这样的:
str_ptr = (struct myStruct(*)[])ptr2;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.