dynamische Funktionsnamen



  • Hallo Leute!

    Ist es möglich eine Funktion aufzurufen wenn man zur erstellungszeit den Namen nicht kennt und der erst während der Laufzeit eingegeben wird?



  • nö, zur laufzeit gibt's keine funktionsnamen mehr (naja, in irgendwelchen debuggger infofiles stehen die drin)



  • Ich hab vergessen zu erwähnen das die Funktion in einer externen Datei ist deshalb müsste ich auch zur laufzeit includieren geht das auch?



  • bauarbeiterjoe schrieb:

    Ich hab vergessen zu erwähnen das die Funktion in einer externen Datei ist deshalb müsste ich auch zur laufzeit includieren geht das auch?

    dazu müssteste einen compiler/linker in dein programm mit einbauen damit das geht. ...oder du benutzt eine art interpretersprache php, perl, oder so'n zwischending wie java z.b.



  • Reine C-Funktionen könnte man noch dynamisch aus ner .dll/.so laden, aber man hat keine Möglichkeit zu prüfen ob die Signatur dem entspricht was der User, der den Befehl eingetippt hat erwartet (will heissen man könnte eine int x(int) auch als void* x(double, char*) benutzen, weil das Symbol nur "x" heisst)

    Bei C++-Funktionen ginge das natürlich auch, allerdings ist es ein wenig blöd die Signatur die das Ding dann haben müsste zu erraten, die ist nämlich von Plattform zu Plattform (und sogar zwischen Compilerversionen) ganz unterschiedlich.



  • Naja dann muss ich mir was überlegen so ne art Preprogramm wäre das möglich das mir in den QT vom Hauptprogramm was reinschreibt bevor es geöffnet wird?



  • bauarbeiterjoe schrieb:

    wäre das möglich das mir in den QT vom Hauptprogramm was reinschreibt bevor es geöffnet wird?

    falls du mit 'QT' quelltext meinst: wenn ein programm compiliert ist hat, der quelltext keine bedeutung mehr. du solltest vielleicht mal danach googlen wie ein compiler arbeitet...



  • Nicht umsonst implementieren andere Produkte komplizierte Plugin-APIs an die man sich dann per .dll oder .so (s.o.) ranflanschen kann bzw. nutzen fremde oder eigene Scriptsprachen-Interpreter.


Anmelden zum Antworten