NAUT (12.04.2019 14:49, просмотров: 299) ответил VLLV на ну дык нужен массив функций проверки условий, индекс этого массива и впихивается.
если оборачивать в функции, то есть такое, но это звиздец:
void GearDown();
void WtgForTakeoff();
void RaisingGear();
void GearUp();
void LoweringGear();
void GearDown(){}
void WtgForTakeoff(){}
void RaisingGear(){}
void GearUp(){}
void LoweringGear(){}
#define FunctionItem(id,fun) id
typedef enum {
#include "fi.h"
} State_Type;
#undef FunctionItem
#define FunctionItem(id,fun) fun
void (*state_table[])() = {
#include "fi.h"
};
void main(void)
{
int curr_state = 0;
while(1)
{
state_table[curr_state]();
}
}
fi.h:
FunctionItem(GEAR_DOWN = 0, GearDown),
FunctionItem(WTG_FOR_TKOFF, WtgForTakeoff),
FunctionItem(RAISING_GEAR, RaisingGear),
FunctionItem(GEAR_UP, GearUp),
FunctionItem(LOWERING_GEAR, LoweringGear)