"Array of Functions" gesucht

Hallo Forum!

Problem: In Abhängigkeit von einem Array of Boolean sollen viele verschiedene Unterfunktionen aufgerufen werden.

Momentan mache ich das sinngemäß mit einer langen Liste von

if (data[0] = TRUE) {action0();}
if (data[1] = TRUE) {action1();}
usw.

Gibt es eine Möglichkeit, das elegant in einer Schleife zu machen? So hier wäre cool:

for (int index = 0; index < max_actions; index++) {
if (data[index] = TRUE) {actionindex;}
}

Ich hoffe, mein Anliegen ist verständlich?!
Gesucht ist sozusagen ein Konstrukt, um ein “Array of Functions” zu beschreiben.
Wozu? Mein Code ist dermaßen unübersichtlich geworden, dass es sehr mühsam ist, neue Funktionen (action0 bis actionxx) einzubinden.

Was kann man da machen?

Grüße

Helmuth

data[0] = TRUE

Vorsicht. Beliebter Fehler. Vergleiche gehen mit ==

Schau dir erst mal Funktionszeiger an: http://www.elektronik-bastelkeller.de/C_Ardu_8_5.php

Dann kannst du dir auch ein Array aus Funktionszeigern anlegen: http://www.elektronik-bastelkeller.de/C_Ardu_8_7.php

Dankeschön!

Ich verwende bei mir in den Libs “simpleThreads” und “LcdMenuLib” auch Arrays von Funktionen. Dazu erstell ich mir einen neuen Typen mit Typedef:

#ifndef TYPEDEF_FUNCPTR
#define TYPEDEF_FUNCPTR
	typedef void (* FuncPtr) ();
#endif

#define  cnt_func  2

void func_1()
{
  Serial.println("func_1");
}

void func_2()
{
  Serial.println("func_2");
}

FuncPtr ary_function[cnt_func];
ary_function[0] = func_1;
ary_function[1] = func_2;

void setup()
{
  Serial.begin(9600);
}

void loop()
{
  for (uint8_t i=0; i<cnt_func; i++) {
    ary_function[i]();
  }
  delay(1000);
}