ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
28 ноября
264280 Топик полностью
she (28.07.2011 17:15, просмотров: 66) ответил fk0 на GCC. Как сделать, чтоб при старте программы вызвались функций из подключенных модулей, но так чтоб их в main не записывать? В C++ -- понятно, статические конструкторы. В голом C?
Очевидно - можно препроцессором, кроссплатформеннее некуда. Но громоздко и долго компилится (в одном проекте так сделал, подзадрало уже). В головнике (инклюдится в мэйн.ц) void LedsInit (void); #define I_ALIAS LedsInit #include "..//init//init_func_add.def" #undef I_ALIAS init_func_add.def: #ifndef I_ALIAS #error Erroneous init function register attempt #endif #ifndef INIT0 #define INIT0 #ifdef __INIT void (* init0)() = I_ALIAS; #endif #define INITF_COUNT 1 #else #ifndef INIT1 #define INIT1 #ifdef __INIT void (* init1)() = I_ALIAS; #endif #undef INITF_COUNT #define INITF_COUNT 2 ... Ну и из мэйна вызвать что-то типа #ifdef INIT0 init0(); #ifdef INIT1 init1(); #ifdef INIT2 init2(); ... Векторов можно один раз накопипастить до жопы и больше об этом не думать.