a.h
typedef const struct sci2a_pfn
{
void (*__p_sci2a_SendByte)(uint8_t dat);
uint16_t (*__p_sci2a_recive)(void);
uint16_t (*__p_getdata)(uint8_t address);
void (*__p_sci2a_SendByte2)(uint8_t dat);
uint16_t (*__p_sci2a_recive2)(void);
uint16_t (*__p_getdata2)(uint8_t address);
void (*__p_getdistance)(void);
}sci2a_pfn;
typedef struct sci2a_handle
{
sci2a_pfn *pfn;
uint16_t handle_id;
uint16_t touch_sum;
}sci2a_handle;
sci2a_handle* sci2a_init(void);
a.c
static void sci2a_SendByte(uint8_t dat);
static uint16_t sci2a_recive(void);
static uint16_t read_sci2a(uint8_t address);
static void sci2a_SendByte2(uint8_t dat);
static uint16_t sci2a_recive2(void);
static uint16_t read_sci2a2(uint8_t address);
static void getdistance(void);
static sci2a_pfn pfn = {
sci2a_SendByte,
sci2a_recive,
read_sci2a,
sci2a_SendByte2,
sci2a_recive2,
read_sci2a2,
getdistance
};
static sci2a_handle handle = {
&pfn,
};
sci2a_handle* sci2a_init(void)
{
return &handle;
}
main.c
sci2a_handle* __p_sci2a_handle;
__p_sci2a_handle = sci2a_init();
function(__p_sci2a_handle);
__p_sci2a_handle->getdistance();
b.c
void function(sci2a_handle* p_sci2a)
{
......
}