Forum: Mikrocontroller und Digitale Elektronik subroutine iinerhalb einer switch


von SeriK (Gast)


Lesenswert?

Guten Tag,

ich habe folgendes Problem:

ich habe eine switch-Anweisung, die mehrere case beinhält.

Innerhalb eines case ist aber sehr viel Code.
Diesen Code würde ich gerne mit Hilfe einer subroutine auslagern.

Wie geht so eine subroutine???
Ist das eine Funktion?

Ich würde in case gerne Subroutine aufrufen und diese Subroutine am Ende 
des Files bearbeiten.


Vielen Dank im Voraus.

1
switch (x)
2
{
3
  case 1:
4
    Jede Menge Code;
5
  
6
  case 2:
7
    Jeder menge Code;
8
9
  Usw.
10
  default:
11
    break;
12
}

von Mark B. (markbrandis)


Lesenswert?

Wir reden wohl von C. Ja, eine "Subroutine" ist eine Funktion.

von P. S. (Gast)


Lesenswert?

http://www.amazon.de/Programmieren-C-ANSI-2-C-Reference/dp/3446154973/ref=sr_1_2?ie=UTF8&s=books&qid=1247221331&sr=8-2

Btw, es einfach auszuprobieren haette kaum laenger gedauert, als die 
Frage zu stellen...

von Karl H. (kbuchegg)


Lesenswert?

SeriK schrieb:
> Wie geht so eine subroutine???
> Ist das eine Funktion?

Ja.
1
  switch (x)
2
  {
3
    case 1:
4
      function1();
5
      break;
6
 
7
    case 2:
8
      function2();
9
      break;
10
11
    default:
12
      break;
13
  }
14
15
...
16
17
18
void function1()
19
{
20
  jede Menge Code
21
}
22
23
void function2()
24
{
25
  jede Menge anderer Code
26
}


Jedes noch so grindige C-Buch hat mindestens 30 Seiten über Funktionen 
und was damit noch so alles zusammenhängt. Zb. auch warum obiger Aufbau 
auf deinem Compiler wahrscheinlich eine Warnung ausgeben wird.
Du solltest dir dringend eine C-Buch zulegen. Da wartet noch vieles auf 
dich!

von willi (Gast)


Lesenswert?

1
void main (void)
2
{
3
switch (x)
4
{
5
  case 1:
6
    code1();
7
  
8
  case 2:
9
    Code2();
10
11
  Usw.
12
  default:
13
    break;
14
}
15
}
16
17
void code1(void)
18
{
19
Jede Menge Code;
20
}
21
22
void code2(void)
23
{
24
ganz viel anderer Code;
25
}

von Sven P. (Gast)


Lesenswert?

1
void funktion1() {
2
3
}
4
5
void funktion2() {
6
7
}
8
9
typedef void (*func_p)();
10
static const func_p funktionen[] = {
11
  funktion1,
12
  funktion2
13
};
14
15
16
funktionen[x - 1]();

So oder so ähnlich >_>

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.