【问题标题】:Type conversion to UInt8 [] from UInt8 gives an error从 UInt8 到 UInt8 [] 的类型转换会出错
【发布时间】:2019-12-28 02:40:21
【问题描述】:

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

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]; 中的含义

谢谢

【问题讨论】:

    标签: ios objective-c struct type-conversion


    【解决方案1】:

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

    【讨论】:

    • 感谢您的回答。如何为结构成员c 赋值?当我尝试myStruct.c = value; 时,我收到以下错误Array type 'UInt8 [15]' is not assignable。但是我将值分配给单个 UInt8's。
    • @AnonProgrammer 在这篇文章中为你留下了评论。
    猜你喜欢
    • 1970-01-01
    • 2018-04-02
    • 2017-03-11
    • 2014-04-30
    • 2016-08-12
    • 2023-03-20
    • 1970-01-01
    • 1970-01-01
    • 2021-01-22
    相关资源
    最近更新 更多