다른 c파일의 파라메터 넘기기 위해 사용.
#include <stdio.h>
#include <stdint.h>
// ========= ex.c ==========
uint8_t buf[32] ={0x11,0x12, 0x33,};
void (*p_func)(uint8_t);
void porcess(uint16_t cmd,uint8_t data )
{
if(cmd ==1 ) data += 1;
else data -= 1;
if(p_func != NULL) { // 원래 함수에 추가적인 기능을 콜백함수로 등록
p_func(data);
}
}
void setCallback(void (*p_func_para)(uint8_t) )
{
p_func = p_func_para;
}
void pp_test (uint8_t **pp_buf1, uint8_t **pp_buf2) // 파라메터 전달하기 위해 이중포인인터 사용
{
*pp_buf1 = &buf[0];
*pp_buf2 = &buf[2];
}
//============= main.c ==========
extern void setCallback(void (*p_func_para)(uint8_t) );
extern void pp_test (uint8_t **pp_buf1, uint8_t **pp_buf2);
void dsp(uint8_t _data)
{
printf("CB dsp %d\n",_data);
}
uint8_t *p_data1, *p_data2;
int main()
{
printf("Hello World\n");
setCallback(dsp);
porcess(0x01, 45);
porcess(0x01, 0);
pp_test(&p_data1, &p_data2);
printf("pp test %x, %x \n",*p_data1, *p_data2);
}
Hello World
CB dsp 46
CB dsp 1
pp test 11, 33