首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么在分配给'uint16_t‘错误时我会得到一个不兼容的类型?

为什么在分配给'uint16_t‘错误时我会得到一个不兼容的类型?
EN

Stack Overflow用户
提问于 2017-10-04 08:12:53
回答 2查看 3.7K关注 0票数 1

我在这段代码中得到了一个incompatible types when assigning to type 'uint16_t {aka short unsigned int}' from type 'ble_uuid_t {aka struct <anonymous>}

代码语言:javascript
复制
ble_uuid_t    ble_uuid;

ble_uuid.uuid = m_adv_uuid[0];

我将m_adv_uuid定义为

代码语言:javascript
复制
#define AMT_SERVICE_UUID             0x2001
#define AMTS_CHAR_UUID               0x20
#define AMT_RCV_BYTES_CNT_CHAR_UUID  0x2003

ble_uuid_t m_adv_uuid[] = {AMT_SERVICE_UUID, AMTS_CHAR_UUID};

ble_uuid_t定义为

代码语言:javascript
复制
typedef struct
{
  uint16_t    uuid; 
  uint8_t     type; 
} ble_uuid_t;

提前感谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-10-04 08:19:46

其实有两个问题:

  1. 您正在初始化结构数组,必须这样做: ble_uuid_t m_adv_uuid[] ={ AMT_SERVICE_UUID,AMTS_CHAR_UUID };
  2. 然后,您将访问struct而不是其成员uuid。您的任务应该如下所示: ble_uuid.uuid = m_adv_uuid.uuid;

或者,当然,如果您不希望m_adv_uuid是一个ble_uuid_t数组,只需在m_adv_uuid声明中删除[]就足够了,您的其余代码就可以工作了:

代码语言:javascript
复制
ble_uuid_t m_adv_uuid = {AMT_SERVICE_UUID, AMTS_CHAR_UUID};
票数 5
EN

Stack Overflow用户

发布于 2017-10-04 08:14:46

您正在定义一个结构数组并尝试初始化它。但您只传递1结构的数据。

编译器认为您正在尝试以不兼容的类型初始化2个ble_uuid_t结构。

这将适用于1个结构:

代码语言:javascript
复制
ble_uuid_t m_adv_uuid = {AMT_SERVICE_UUID, AMTS_CHAR_UUID};

要初始化2个结构,您可以这样做:

代码语言:javascript
复制
ble_uuid_t m_adv_uuid[] = {{AMT_SERVICE_UUID, AMTS_CHAR_UUID},{AMT_SERVICE_UUID, AMTS_CHAR_UUID}};
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46560049

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档