函数指针的另外一种用法:将函数指针传入到另外一个文件中去,然后在另外一个文件中进行操作
在vs 2019中的运行结果:
main函数的内容:
#include <stdio.h>
#include <stdint.h>
#include "download_func.h"
void app_usbd_event_handler(int temp)
{
printf("app_usbd_event_handler = %d",temp);
}
int main()
{
nrf_drv_usbd_init(app_usbd_event_handler);
printf("\n");
app_handler();
return 1;
}
download_func.c文件的内容:
#include <stdio.h>
#include <stdint.h>
#include "download_func.h"
static nrfx_usbd_event_handler_t m_event_handler;
void nrf_drv_usbd_init(nrfx_usbd_event_handler_t temp_event_handler)
{
m_event_handler = temp_event_handler;
}
void app_handler(void)
{
int temp = 2;
m_event_handler(temp);
}
download_func.h文件的内容
#ifndef __DOWNLOAD_func_H__
#define __DOWNLOAD_func_H__
typedef void (*nrfx_usbd_event_handler_t)(int temp);
void app_handler(void);
void nrf_drv_usbd_init(nrfx_usbd_event_handler_t temp_event_handler);
#endif
最后的运行结果:
分析:
主函数中将app_usbd_event_handler函数指针传入到download_func.c中,然后就可以在改文件创建一个static变量,保存该函数指针,之后就可以在该文件中随意使用