0

我已经定义了一个这样的结构:

typedef struct __attribute__((packed)) {
    UInt8  a;
    UInt16 b;
    UInt8  c[15];
} myStruct;

当我试图获得价值时

UInt8  c = packet->c;

我收到以下错误

指向整数转换的不兼容指针,用“UInt8”类型的表达式初始化“UInt8”(又名“unsigned char”)[15]

我需要转换成什么类型​​才能编译?我尝试在不同的地方添加 [15] 下标,但无法解决。也解释了什么[15]意思UInt8 c[15];

谢谢

4

1 回答 1

1

我猜packet被宣布为myStruct packet;. 如果是这样,packet->c是一个数组UInt8,您最多可以在此成员中存储 15 个项目。这就是为什么您不能将其值分配给单个UInt8. 替换UInt8 c = packet->c;UInt8* c = packet->c;。要获取第一个c的项目,请使用以下代码:UInt8 firstC = c[0];

于 2019-08-22T18:14:12.610 回答