www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik subroutine iinerhalb einer switch


Autor: SeriK (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

switch (x)
{
  case 1:
    Jede Menge Code;
  
  case 2:
    Jeder menge Code;

  Usw.
  default:
    break;
}

Autor: Mark Brandis (markbrandis)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wir reden wohl von C. Ja, eine "Subroutine" ist eine Funktion.

Autor: P. S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
http://www.amazon.de/Programmieren-C-ANSI-2-C-Refe...

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

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
SeriK schrieb:
> Wie geht so eine subroutine???
> Ist das eine Funktion?

Ja.
  switch (x)
  {
    case 1:
      function1();
      break;
 
    case 2:
      function2();
      break;

    default:
      break;
  }

...


void function1()
{
  jede Menge Code
}

void function2()
{
  jede Menge anderer Code
}


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!

Autor: willi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
void main (void)
{
switch (x)
{
  case 1:
    code1();
  
  case 2:
    Code2();

  Usw.
  default:
    break;
}
}

void code1(void)
{
Jede Menge Code;
}

void code2(void)
{
ganz viel anderer Code;
}

Autor: Sven P. (haku) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
void funktion1() {

}

void funktion2() {

}

typedef void (*func_p)();
static const func_p funktionen[] = {
  funktion1,
  funktion2
};


funktionen[x - 1]();

So oder so ähnlich >_>

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.