野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 13277|回复: 6

C语言问题

[复制链接]
发表于 2017-4-27 09:57:40 | 显示全部楼层 |阅读模式
typedef struct sLoRaMacPrimitives
{
    /*!
     * \brief   MCPS-Confirm primitive
     *
     * \param   [OUT] MCPS-Confirm parameters
     */
    void ( *MacMcpsConfirm )( McpsConfirm_t *McpsConfirm );
    /*!
     * \brief   MCPS-Indication primitive
     *
     * \param   [OUT] MCPS-Indication parameters
     */
    void ( *MacMcpsIndication )( McpsIndication_t *McpsIndication );
    /*!
     * \brief   MLME-Confirm primitive
     *
     * \param   [OUT] MLME-Confirm parameters
     */
    void ( *MacMlmeConfirm )( MlmeConfirm_t *MlmeConfirm );
}LoRaMacPrimitives_t;
static McpsConfirm_t McpsConfirm;
typedef struct sMcpsConfirm
{
    /*!
     * Holds the previously performed MCPS-Request
     */
    Mcps_t McpsRequest;
    /*!
     * Status of the operation
     */
    LoRaMacEventInfoStatus_t Status;
    /*!
     * Uplink datarate
     */
    uint8_t Datarate;
    /*!
     * Transmission power
     */
    int8_t TxPower;
    /*!
     * Set if an acknowledgement was received
     */
    bool AckReceived;
    /*!
     * Provides the number of retransmissions
     */
    uint8_t NbRetries;
    /*!
     * The transmission time on air of the frame
     */
    TimerTime_t TxTimeOnAir;
    /*!
     * The uplink counter value related to the frame
     */
    uint32_t UpLinkCounter;
    /*!
     * The uplink frequency related to the frame
     */
    uint32_t UpLinkFrequency;
}McpsConfirm_t;





int main( void )
{

       
          LoRaMacPrimitives_t LoRaMacPrimitives;
    LoRaMacCallback_t LoRaMacCallbacks;
    MibRequestConfirm_t mibReq;

    BoardInitMcu( );
    BoardInitPeriph( );

    DeviceState = DEVICE_STATE_INIT;
       

       


    while( 1 )
    {
        switch( DeviceState )
        {
            case DEVICE_STATE_INIT:
            {
                LoRaMacPrimitives.MacMcpsConfirm = McpsConfirm;
                LoRaMacPrimitives.MacMcpsIndication = McpsIndication;
                LoRaMacPrimitives.MacMlmeConfirm = MlmeConfirm;
此处省略了 太长了就复制关键部分;
这个赋值没有看懂,LoRaMacPrimitives 我觉得一个函数指针的结构体 MacMcpsConfirm 这个函数指针的参数是 McpsConfirm_t *McpsConfirm,但是赋值的时候怎么就把 参数结构体 赋值过去了
这个做法没有看懂


回复

使用道具 举报

发表于 2017-4-27 10:02:05 | 显示全部楼层
这定义的就是结构体,赋值的时候也是结构体,不是指针
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-4-27 10:04:20 | 显示全部楼层
子车梨祎 发表于 2017-4-27 10:02
这定义的就是结构体,赋值的时候也是结构体,不是指针

定义的结构体 成员不是一个 函数指针吗?但是赋值的这个结构体 成员只是普通变量
回复 支持 反对

使用道具 举报

发表于 2017-4-27 10:21:14 | 显示全部楼层
陈浪 发表于 2017-4-27 10:04
定义的结构体 成员不是一个 函数指针吗?但是赋值的这个结构体 成员只是普通变量

结构体的成员也是变量
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-4-27 10:22:35 | 显示全部楼层
子车梨祎 发表于 2017-4-27 10:21
结构体的成员也是变量

void ( *MacMcpsConfirm )( McpsConfirm_t *McpsConfirm );
这个是 不是一个函数指针吗?
回复 支持 反对

使用道具 举报

发表于 2017-4-27 14:04:37 | 显示全部楼层
本帖最后由 rpn 于 2017-4-27 14:05 编辑

http://stackforce.github.io/LoRaMac-doc/
看了官方文档,McpsConfirm好像也是函数,同名了

  1. static void McpsConfirm( McpsConfirm_t *McpsConfirm )
  2. {
  3.   // Implementation of the MCPS-Confirm primitive
  4. }
  5. static void McpsIndication( McpsIndication_t *McpsIndication )
  6. {
  7.   // Implementation of the MCPS-Indication primitive
  8. }
  9. static void MlmeConfirm( MlmeConfirm_t *MlmeConfirm )
  10. {
  11.   // Implementation of the MLME-Confirm primitive
  12. }
  13. LoRaMacPrimitives_t LoRaMacPrimitives;
  14. LoRaMacCallback_t LoRaMacCallbacks;
  15. LoRaMacStatus_t Status;
复制代码
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-4-27 22:12:36 | 显示全部楼层
rpn 发表于 2017-4-27 14:04
http://stackforce.github.io/LoRaMac-doc/
看了官方文档,McpsConfirm好像也是函数,同名了

您也是弄这个的?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2025-1-16 09:10 , Processed in 0.030043 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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