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
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.
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...
Danke für die Rückmeldungen. Werde beides mal ausprobieren und schauen was platzsparender ist! Gruß zander
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 | }
|
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.