| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 708 人关注过本帖
标题:指针函数的结构体指针参数,如何优雅的适配不同结构体类型
取消只看楼主 加入收藏
szchen2018
Rank: 2
等 级:论坛游民
帖 子:39
专家分:21
注 册:2021-11-20
结帖率:91.67%
收藏
已结贴  问题点数:20 回复次数:1 
指针函数的结构体指针参数,如何优雅的适配不同结构体类型
typedef struct
{
    uint8_t reg;        
    uint32_t data;
}COEFFICIENT_STRUCT;

typedef struct{
    uint8_t command;
    uint8_t param;
} cfg_reg;

typedef struct{
    uint8 Address;
    uint8 Top_data;
    uint8 Middle_data;
    uint8 Botton_data;
}RAM1_TAB;

typedef struct{
    BYTE Address;
    BYTE First_data;
    BYTE Top_data;
    BYTE Middle_data;
    BYTE Botton_data;
}RAM2_TAB;

上面四个结构体,会定义成结构体数组,现在每次选用不同的器件要打开相应宏定义,而且每增加一个器件又要增加宏定义、指针函数,很麻烦和不好看。
#define AMP_1
//#define AMP_2
//#define AMP_3
//#define AMP_4

#ifdef AMP_1
typedef int (*ampop_ctrl)( AmpList *pstAmpList, const COEFFICIENT_STRUCT *reg, int n);
#elif defined (AMP_2)
typedef int (*ampop_ctrl)( AmpList *pstAmpList, const cfg_reg *reg, int n);
#elif defined (AMP_3)
typedef int (*ampop_ctrl)( AmpList *pstAmpList, const RAM1_TAB *reg, int n);
#elif defined (AMP_4)
typedef int (*ampop_ctrl)( AmpList *pstAmpList, const RAM2_TAB *reg, int n);
#endif
搜索更多相关主题的帖子: int typedef 指针 BYTE 结构体 
2022-07-26 11:38
szchen2018
Rank: 2
等 级:论坛游民
帖 子:39
专家分:21
注 册:2021-11-20
收藏
得分:0 
回复 2楼 rjsp
我的需求是typedef int (*ampop_ctrl)( AmpList *pstAmpList, const RAM_TAB *reg, int n )不用定义多个,结构体也不用定义多个,看来只能做到前者,感谢回答
2022-07-26 15:10
快速回复:指针函数的结构体指针参数,如何优雅的适配不同结构体类型
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015121 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved