ЗЫ. Кстати, для обламывания головы можно добавить такой кусок
Код
#define TASK(number, fun, state) const char ht_##fun = number;
#include "task_list.h"
#undef TASK
Который позволяет не объявлять заранее дескрипторы задач OOPS_1,OOPS_2,OOPS_3,..., а сделать его из имени функции добавив перед ним ht_ .
Т.е. после такого:
Код
// task_list.h
TASK(1, DoorSw, STATE_OFF)
TASK(4, TrunkSw, STATE_SLEEP)
TASK(2, DriverSw, STATE_RUN)
TASK(3, HoodSw, STATE_RUN)
появятся константы ht_DoorSw, ht_TrunkSw, ht_DriverSw, ht_HoodSw со значениями равными соответствующим индексам в массивах ...