Я пытаюсь реализовать фреймворк, в котором мне нужно объявить (в файле .h) список доступных «драйверов» (переменных структуры), которые будут определены в конкретных модулях .c.Поскольку в будущем список, вероятно, будет расти, я бы хотел, чтобы все это было в одном месте в файле .h, чтобы его можно было легко расширять.
Например, давайте получим "driver.h"
typedef struct driver {
int id;
char name[10];
int(*init)();
void (*deinit)();
int (*doTheJob)(int);
} driver_t;
#define DRIVERLIST driver1, driver2, driver3
#define DRIVERS extern driver_t DRIVERLIST;
DRIVERS
Тогда конкретные драйверы (driver1, driver2, driver3) будут определены в выделенных модулях .. например, driver1.c, driver2.c .. и т.д ...
Но тогда я бы хотел иметьмодуль, например manager.c, где я хотел бы определить массив доступных драйверов, как объявлено в driver.h, так что я могу перебирать массив и получать драйверы для использования в других частях фреймворка.
Так что в manager.c мне нужно что-то вроде:
driver_t drivers[MAX_DRIVERS] = {DRIVERS}
Но, очевидно, он не компилируется таким образом. Основная идея - редактировать только driver.h, когда мне нужно добавить объявление для дополнительногодрайвер в будущем, а затем просто внедрить его в выделенный модуль, без необходимости редактировать, например, manager.c или другие части фреймворка. У вас есть идеи, как реализовать такой механизм в c?