ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Суббота
6 июля
161545 Топик полностью
ReAl (16.07.2009 18:03, просмотров: 191) ответил Vladimir Ljaschko на Спасибо за ссылки. Проблема в том, что состояний около 100 и проследить правильность перечисления по варианту 2 трудно. В варианте 1 свои недостатки, для быстрых процессов в прерываниях может оказаться критично тратить время на дополнительную
По варианту 2 правильность перечисления поддерживается автоматически ("В обеих порядок определяется ТОЛЬКО enum-ом" - т.е. во втором хоть в массиве только указатели на функции, но они в правильном порядке независимо от порядка указания их в исходном тексте), неуказанные указатели обнуляются. Но это требует поддержки возможности, которая есть в стандарте С99, но не во всех компиляторах. Без макросов, для ясности, это выглядит так: int array[] = { [5] = 10, [3] = 2 };эквивалентно int array[] = { 0, 0, 0, 2, 0, 10 }; Макрос по второму варианту генерирует именно такое [LEFT] = do_LEFT