搜索
bottom↓
回复: 3

请教一个define定义的含义(已解决)

[复制链接]

出4535入62汤圆

发表于 2020-11-21 17:05:19 | 显示全部楼层 |阅读模式
本帖最后由 supercoo 于 2020-11-21 21:45 编辑
  1. struct _bt_gatt_ccc {
  2.         struct bt_gatt_ccc_cfg        *cfg;
  3.         size_t                        cfg_len;
  4.         u16_t                        value;
  5.         void                        (*cfg_changed)(const struct bt_gatt_attr *attr,
  6.                                                u16_t value);
  7. };
  8. struct _bt_gatt_ccc hid_ccc[MOER_HID_CCC_NUM];
  9. #define BT_GATT_CCC_INTERNAL(_ccc)                                        \
  10. {                                                                        \
  11.         .uuid = BT_UUID_GATT_CCC,                                        \
  12.         .perm = BT_GATT_PERM_READ_ENCRYPT | BT_GATT_PERM_WRITE_ENCRYPT,                        \
  13.         .read = bt_gatt_attr_read_ccc,                                        \
  14.         .write = bt_gatt_attr_write_ccc,                                \
  15.         .user_data = _ccc,\
  16. }
  17. struct bt_gatt_ccc_cfg {
  18.         u8_t                        valid;
  19.         bt_addr_le_t                peer;
  20.         u16_t                        value;
  21.         u8_t                        data[4] __aligned(4);
  22. };
  23. typedef struct {
  24.         u8_t      type;
  25.         bt_addr_t a;
  26. } bt_addr_le_t;
  27. BT_GATT_CCC_INTERNAL(&hid_ccc[0]),
复制代码


其中代码BT_GATT_CCC_INTERNAL(&hid_ccc[0]),
这句话啥意思,没看明白,给hid_ccc[0]赋值吗?怎么赋的?

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入0汤圆

发表于 2020-11-21 18:23:23 来自手机 | 显示全部楼层
你代码没贴完吧,先定义了一个结构体,然后创建了一个结构体数组,然后定义了一个宏,最后一句调用了这个宏观,这个宏看写法是给结构体初始化的时候赋值用的,宏的形参就是前面创建的结构体数组中第一个结构体的地址。

出4535入62汤圆

 楼主| 发表于 2020-11-21 18:43:44 | 显示全部楼层
lingdianhao 发表于 2020-11-21 18:23
你代码没贴完吧,先定义了一个结构体,然后创建了一个结构体数组,然后定义了一个宏,最后一句调用了这个宏 ...

请教  比如 .perm没看出来是谁的成员?

另外您说代码没贴全?缺那一部分的信息呢?
  1. struct bt_gatt_ccc_cfg {
  2.         u8_t                        valid;
  3.         bt_addr_le_t                peer;
  4.         u16_t                        value;
  5.         u8_t                        data[4] __aligned(4);
  6. };
  7. typedef struct {
  8.         u8_t      type;
  9.         bt_addr_t a;
  10. } bt_addr_le_t;
复制代码

出4535入62汤圆

 楼主| 发表于 2020-11-21 19:01:37 | 显示全部楼层
lingdianhao 发表于 2020-11-21 18:23
你代码没贴完吧,先定义了一个结构体,然后创建了一个结构体数组,然后定义了一个宏,最后一句调用了这个宏 ...

我勒个去   我搞明白了,重点是后边的逗号,原来这是一个结构体的一部分,谢谢

                               BT_GATT_CHRC_READ | BT_GATT_CHRC_NOTIFY),
        BT_GATT_DESCRIPTOR(BT_UUID_HIDS_REPORT, BT_GATT_PERM_READ_ENCRYPT,
                           read_report_value, NULL, NULL),
        BT_GATT_CCC_INTERNAL(&hid_ccc[1]),
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-8-16 22:29

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表