从UInt8到UInt8 []的类型转换给出错误

时间:2019-08-22 18:11:58

标签: ios objective-c struct type-conversion

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

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

当我尝试获得价值时

UInt8  c = packet->c;

我收到以下错误

  

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

我需要转换为哪种类型才能进行编译?我尝试在不同的地方添加[15]下标,但无法解决。同时说明[15]UInt8 c[15];

中的含义

谢谢

1 个答案:

答案 0 :(得分:1)

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