Ein etwas anderer Funktionsaufruf



  • hi,

    Ich möchte via so eine Funktion aufrufen:

    callFunction("Name");

    Es geht mit dlopen, etc. aber anhand Zeigerarithmetik, ginge das auch? Weiss jemand wie?
    Danke

    DrC-Work



  • Naja schon.
    Musst dir halt eine Art Map anlegen.

    void BlaBlupp() {
     /* */
    }
    
    void BliBlupp() {
      /* */
    }
    
    typedef void (*FPTR)();
    typedef struct ftable_entry {
      const char* name;            
      FPTR function;   
    } ftable_entry;
    
    static ftable_entry ftable = {
        {"Name", BlaBlupp}
        {"Hans", BliBlupp}
    };
    
    void callFunction(const char* name) {
      for(int i = 0; i < 2; ++i) {
        if(strcmp(ftable[i].name, name)) {
           (ftable[i].function)();
           return;
        }
    
      }
    }
    

    //Klammer vergessen



  • Danke, hehejo, du bist mein Held 🙂


Anmelden zum Antworten