мне нужно объявить (typedef'd) структуру и (typedef'd) функцию ссылки на боли старого C. Это мой код:Объявляем структуры и Справочник по функциям, которые используют друг друга
typedef void (*monitor_calback)(monitor_data*, short int, short int, void*);
typedef struct
{
int port;
unsigned char port_state;
monitor_calback cb_high[8];
void *cb_high_data[8];
monitor_calback cb_low[8];
void *cb_low_data[8];
} monitor_data;
Но, конечно, он не компилируется, потому что мы не знаем о структуре при объявлении функции.
Я получил это, но выглядит немного грязным и немного трудно читать.
struct _monitor_data;
typedef void (*monitor_calback)(struct _monitor_data*, short int, short int, void*);
typedef struct _monitor_data
{
int port;
unsigned char port_state;
monitor_calback cb_high[8];
void *cb_high_data[8];
monitor_calback cb_low[8];
void *cb_low_data[8];
} monitor_data;
Есть ли лучшие способы сделать это?
Не выглядит грязным для меня. Разница действительно минимальна. – Jon
Вы должны добавить 'struct _monitor_data;' строку до определения 'monitor_calback' (во втором фрагменте кода). –