Forum: Mikrocontroller und Digitale Elektronik Unterprgrammname parameterabhängig


von zander (Gast)


Lesenswert?

Hallo Zusammen,

ist es möglich den Namen eines Unterprogramms parameterabhängig zu 
gestalten?
Z.B. um den Aufruf vieler gleichnamiger Unterprogramme (die sich nur 
durch eine fortlaufende Nummer unterscheiden) einfacher zu gestalten?

Die Idee:
---------------------------------------
int main()
  {

  for (i=1; i<100; i++)
     {
     sub_i ();
     }

}
---------------------------------------
// Unterprogramme
void sub_1 ()
  {
  // irgendwas
  }

void sub_2 ()
  {
  // irgendwas
  }

void sub_3 ()
  {
  // irgendwas
  }

...

void sub_99 ()
  {
  // irgendwas
  }
----------------------------------------

Vielen Dank für die Rückmeldungen!
Gruß zander

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Nein, die Namen der Funktionen lassen sich nicht so gestalten.

Du kannst aber ein Array von Funktionspointern verwenden - 
vorausgesetzt, daß die Funktionen alle vom gleichen Typ sind, was sie 
bei Deinem Konstrukt ja auch sein müssen.

von rofl (Gast)


Lesenswert?

warum nicht :
1
int main()
2
  {
3
4
  for (i=1; i<100; i++)
5
     {
6
     sub( i );
7
     }
8
9
}
10
---------------------------------------
11
// Unterprogramme
12
void sub_1 (uint8_t s)
13
  {
14
    switch(s)
15
    {
16
      case 1: // irgendwas bei 1
17
       break:
18
      case 2: // irgendwas bei 2
19
       break:
20
      case 3: // irgendwas bei 3
21
       break:
22
      ...
23
      ...
24
    }
25
  }

alternativ das array mit funktionszeigern...

von zander (Gast)


Lesenswert?

Danke für die Rückmeldungen.
Werde beides mal ausprobieren und schauen was platzsparender ist!

Gruß
zander

von Oktavian G. (Firma: Hochschule Karlsruhe) (tavin)


Lesenswert?

wie wäre mit sowas? Die funktionen einfach in ein Array packen und dan 
indexiert aufzuruffen.
1
void (*functionTable[0x80]) (void) ={f1,f2,f3,f4};
2
3
int main() 
4
{
5
    for (index=0;index<sizeof(functionTable);index++)
6
         {
7
         functionTable[index]();
8
         }
9
}

von Syntax (Gast)


Lesenswert?

indexiert also...

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.