Я даю my_cback
функции в качестве входа.
Затем я хочу получить доступ к аргументам my_cback.Как мне этого добиться?
Передать функции (foobar()
ниже) не только my_cback
, но и аргументы для my_cback()
.
#include <stdint.h>
#include <stdio.h>
typedef char *scan_results;
typedef void (cback) (scan_results *scan_result, uint8_t *adv_data);
// Declare function
cback my_cback;
// Define function
void my_cback(scan_results *scan_result, uint8_t *adv_data) {
*scan_result = "Hello";
*adv_data = 42;
}
void foobar(cback foo, scan_results *scan_result, uint8_t *adv_data) {
(foo)(scan_result, adv_data);
// access the arguments
printf("Inside foobar(): scan_result = %s, adv_data = %d\n", *scan_result,
*adv_data);
}
int main() {
scan_results sr;
uint8_t data;
// I give my_cback to a function as an input.
foobar(my_cback, &sr, &data);
// access the arguments
printf("Inside main(): scan_result = %s, adv_data = %d\n", sr, data);
}
Выход
Inside foobar(): scan_result = Hello, adv_data = 42
Inside main(): scan_result = Hello, adv_data = 42