Files
Module_connection/connection_module.c

72 lines
2.3 KiB
C
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#include <stdio.h>
// Объявляем функции модулей как слабые (weak), чтобы отсутствующие модули не ломали компиляцию
#define DECLARE_MODULE_RUN(num) extern int module_##num##_run() __attribute__((weak))
DECLARE_MODULE_RUN(00);
DECLARE_MODULE_RUN(01);
DECLARE_MODULE_RUN(02);
DECLARE_MODULE_RUN(03);
DECLARE_MODULE_RUN(04);
DECLARE_MODULE_RUN(05);
DECLARE_MODULE_RUN(06);
DECLARE_MODULE_RUN(07);
DECLARE_MODULE_RUN(08);
DECLARE_MODULE_RUN(09);
DECLARE_MODULE_RUN(10);
DECLARE_MODULE_RUN(11);
DECLARE_MODULE_RUN(12);
DECLARE_MODULE_RUN(13);
DECLARE_MODULE_RUN(14);
DECLARE_MODULE_RUN(15);
DECLARE_MODULE_RUN(16);
DECLARE_MODULE_RUN(17);
DECLARE_MODULE_RUN(18);
DECLARE_MODULE_RUN(19);
DECLARE_MODULE_RUN(20);
DECLARE_MODULE_RUN(21);
DECLARE_MODULE_RUN(22);
DECLARE_MODULE_RUN(23);
DECLARE_MODULE_RUN(24);
DECLARE_MODULE_RUN(25);
DECLARE_MODULE_RUN(26);
DECLARE_MODULE_RUN(27);
DECLARE_MODULE_RUN(28);
DECLARE_MODULE_RUN(29);
DECLARE_MODULE_RUN(30);
DECLARE_MODULE_RUN(31);
DECLARE_MODULE_RUN(32);
DECLARE_MODULE_RUN(33);
DECLARE_MODULE_RUN(34);
DECLARE_MODULE_RUN(35);
int main() {
// Массив указателей на функции модулей
int (*module_runs[36])() = {
module_00_run, module_01_run, module_02_run, module_03_run,
module_04_run, module_05_run, module_06_run, module_07_run,
module_08_run, module_09_run, module_10_run, module_11_run,
module_12_run, module_13_run, module_14_run, module_15_run,
module_16_run, module_17_run, module_18_run, module_19_run,
module_20_run, module_21_run, module_22_run, module_23_run,
module_24_run, module_25_run, module_26_run, module_27_run,
module_28_run, module_29_run, module_30_run, module_31_run,
module_32_run, module_33_run, module_34_run, module_35_run
};
// Выполняем все модули последовательно
for (int i = 0; i < 35; i++) {
if (module_runs[i] != NULL) {
printf("Запуск модуля module_%02d\n", i);
int result = module_runs[i]();
if (result != 0) {
fprintf(stderr, "Модуль module_%02d завершился с ошибкой: %d\n", i, result);
}
}
}
return 0;
}
// gcc -o connection_module connection_module.c module_*.c