- 3D-Druck Einstieg und Tipps         
Ergebnis 1 bis 10 von 11

Thema: Funktonen aus Funktion starten?

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    19.01.2016
    Ort
    Saarbrücken
    Beiträge
    397

    Funktonen aus Funktion starten?

    Mahlzeit!

    Vielleicht habe ich den Titel schlecht gewählt, aber was besseres ist mir nicht eingefallen.

    Mich würde mal interessieren, kann ich, zum Beispiel aus einer Datei, variable abrufen die den Namen einer Funktion darstellt?

    Beispielsweise in einer Datei steht "umwandeln" und damit soll dann die Funktion

    Code:
    void umwandeln()
    starten. Funktioniert das? Oder geht es nur mit einer if?

  2. #2
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    19.04.2008
    Beiträge
    282
    nein ... das geht so nicht. Der C-Programmcode wird ja durch den Compiler in HEX-Code übertragen. Dadurch weiß der HEX Code aber nicht mehr, was mit umwandeln() gemeint ist. Deshalb kannst Du die Funktion so nicht während der Laufzeit aufrufen. Du must also ein IF (oder vermutlich besser ein SWITCH) nutzen, um bei Erkennen des Datei-Inhaltes die richtige Funktion anzuspringen.

  3. #3
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    19.01.2016
    Ort
    Saarbrücken
    Beiträge
    397
    Ich habe so etwas schon mit einer SWITCH gemacht, dachte nur auf diese Weise wäre es übersichtlicher da es ja eine Bezeichnung und keine Nummer wäre.

    Danke.

  4. #4
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    07.04.2015
    Beiträge
    867
    Doch, das geht theoretisch auch, nicht direkt in C, aber über Umwege. Du kannst Dir ein externes Tool oder Script bauen, dass alle Module Deines Projektes im PreBuild, also vor dem Kompilieren, einmal durchscannt, die aufrufbaren Funktionen erfasst (ggf. durch Attribut, Signatur oder Kommentar gekennzeichnet) und zu einer größeren Anweisung zusammenpackt. Diese größere Anweisung kann sowohl einfach nur über StringCompare den gesamten Namen vergleichen (langsam) oder auch einzelne Bestandteile der Zeichenketten in einer baumartigen Struktur bis zum vollständigen Namensvergleich als If-Anweisungen heruntersteppen.

    So ein Werkzeug bezeichnet man als SingleShot-Code-Generator (Weil er Code generiert, der den Code des vorhergehenden Durchlaufes vollständig überschreibt, also eigentlich die Datei mit der möglicherweise recht großen Sprungsanweisung bei jedem Durchlauf vor dem Kompilieren neu erstellt.)

  5. #5
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    19.01.2016
    Ort
    Saarbrücken
    Beiträge
    397
    Danke, aber das ist dann doch mehr Aufwand wie es am Ende nutzen würde.

  6. #6
    HaWe
    Gast
    ich denke schon, dass das geht.

    Du liest aus einer Datei einen Variablen-Namen als Variablen-String (z.B. char * strbuf), im einfachsten Fall einfach nur ein Zeichen oder wenigstens gleich lange strings.

    zunächst deklarierst du deine Funktionen

    Code:
    void umwandeln() { };
    void loeschen() { };
    void ausschalten() { };
    dann liest du aus deiner Datei:

    Code:
    FILE * pFile;
    char strbuf[10];
    pFile = fopen ("myfile.txt" , "r");
    fgets (strbuf, 6, pFile);
    Den String übergibst du deiner Funktion tuwas():

    Code:
    void tuwas(char * str) {   
       if (str == "umwand") { umwandeln() };
       else
       if (str == "loesch") { loeschen() };
       else
       if (str == "aussch") { ausschalten() };
    
    }
    Ich vermute, das könnte so gehen.

    Am Schluss nicht vergessen:
    Code:
    fclose (pFile);

Ähnliche Themen

  1. Funktion gibt Funktion zurück... nächstes Problem
    Von Jaecko im Forum C - Programmierung (GCC u.a.)
    Antworten: 2
    Letzter Beitrag: 19.12.2008, 08:51
  2. Funktion als Rückgabewert einer Funktion?
    Von Jaecko im Forum C - Programmierung (GCC u.a.)
    Antworten: 1
    Letzter Beitrag: 08.09.2008, 10:25
  3. Starten|Stoppen (C)
    Von BlackDevil im Forum C - Programmierung (GCC u.a.)
    Antworten: 7
    Letzter Beitrag: 03.07.2008, 10:07
  4. Wie starten?
    Von Psychomax im Forum C - Programmierung (GCC u.a.)
    Antworten: 18
    Letzter Beitrag: 09.06.2006, 10:28
  5. .exe von asm aus starten
    Von michiE im Forum Software, Algorithmen und KI
    Antworten: 10
    Letzter Beitrag: 31.03.2006, 23:13

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Solar Speicher und Akkus Tests