概述
在项目中,经常见到此写法,在此写个demo,方便其他工程师参阅。
开发环境:Visual Studio Community 2022
1、代码
#include <stdio.h>
//封装库代码
typedef struct {
bool status;
void (*setStatus)(int status);
}T_LED;
T_LED t_led;
//void addCallbackFunc(void (*psetStatus)(int status))
//{
// t_led.setStatus = psetStatus;
//}
void registerCallbackFunc(void (*psetStatus)(int status))
{
t_led.setStatus = psetStatus;
}
int getStatus(void)
{
return t_led.status;
}
void init_parameter(void)
{
t_led.status = true;
}
void run(void)
{
if (t_led.setStatus == NULL) return ;
if (t_led.status != false) {
t_led.setStatus(t_led.status);
}
}
//提供用户使用代码
void callback(int status)
{
printf("callback\n");
printf("status:%d", status);
}
int main(void)
{
init_parameter();
// addCallbackFunc(callback);
registerCallbackFunc(callback);
run();
return(0);
}
2、运行结果