Cześć,
Zacząłem doceniać możliwości callback'ów w języku C. Mam taką funkcję inicjalizującą moduł komunikacyjny. Instrukcja warunkowa sprawdza czy nie podajemy pustego wskaźnika do funkcji.
int8_t comm_mgr_init(int8_t (*dump_buff_fptr)(char *, uint16_t))
{
if(dump_buff_fptr != 0)
{
return -1;
}
comm_struct.dump_buff_fptr = dump_buff_fptr;
return 0;
}
To rozwiązanie nie zadziała zawsze. W przypadku gdy wywołamy funkcję comm_mgr_init w sposób jak poniżej inicjalizacja się zakończy powodzeniem, lecz niestety to będzie wskaźnik w miejsce w którym nie ma żadnej funkcji.
int8_t* ptr;
comm_mgr_init(ptr);
Czy w C można jakoś sprawdzić który wskaźnik jest wskaźnikiem do funkcji? Jakieś makra etc.?