Вызов функции, имя которой хранится в переменной char*

Vlad_K
Offline
Зарегистрирован: 15.10.2014

В программе требуется последовательный запуск нескольких функций, имена которых хранится в массиве в зависимости от состояния соответствующего флага запуска. 

Алгоритм, который я предполагаю сделать:

//Строковый массив имен функций, которые должны выполняться в зависимости от соответствующего значения FlagFunc[]

char* FuncName[]={"func1()","func2()","func3()","func4()","func5()","func6()","func7()"};

//Массив флагов Если значение FlagFunc(i)=1, то функция с именем //FuncName[i] должна выполниться. Т.е. в данном примере нужно последовательно запустить func3(), func5(), //func6()

boolean FlagFunc[]={0,0,1,0,1,1,0};

 void func1()

{// Функция1

}

...

...// Определения всех семи функций

...

 void func7()

{// Функция7

}

void loop()

{

//Тут тело программы в которой назначаются в массиве FlagFunc[] те функции которые потом будет необходимо выполнить;

for(i=0;i<8;i++)\\ Цикл выполнения необходимых функций

{

if( FlagFunc[i]==1){ Тут должна запуститься функция с именем FuncName[i]}

}

Т.е. как запустить выполнение функции имя которой хранится в переменной?
Возможно ли сделать программу по такому алгоритму.  В идеале хотелось бы иметь возможность передавать параметры функций по подобному алгоритму  Если такая реализация невозможна, то какой алгоритм можно использовать?
 
Структура с использованием if-else возможна, но она сильно разрастается с увеличением колличества функций. При изменении имен функций и их колличества приходится менять довольно большой учкасток кода
toc
Offline
Зарегистрирован: 09.02.2013

почитайте  по теме:  arduino Defining an array of function pointers