ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Пятница
19 июля
650405 Топик полностью
Олдфаг (02.02.2016 16:26, просмотров: 1) ответил SciFi на Надо завести переменную, в которой будет сидеть размер:
Привет от сбежавшего)) Ну тут же просится икс макро. //Вот есть тип указатель: typedef void(*Event_TypeDef)(void); //Вот пара функций: void hand0(void) {;} void hand1(void) {;} // Начнём? Вот таблица с именами функций. #define TBL_PTF(X_MACRO) \ X_MACRO( hand0 ) \ X_MACRO( hand1 ) // Создать массив указателей. #define EXPAND_AS_ARRAY(n) n, Event_TypeDef Event_List[] = { TBL_PTF(EXPAND_AS_ARRAY) }; // Создать перечисление с декорированными именами. #define EXPAND_AS_ENUM(n) en_ ## n, typedef enum{ TBL_PTF(EXPAND_AS_ENUM) SIZEOF_ARRAY_PTR }enum_t; // Объявить extern c явным указанием размера, чтобы все файлы проэкта могли знать его длину // Объявление extern должно быть после enum, чтобы уже был определен SIZEOF_ARRAY_PTR extern Event_TypeDef Event_List[SIZEOF_ARRAY_PTR]; void main( void ) { printf("%d\n", SIZEOF_ARRAY_PTR); }