bleicher: C++, Dynamische Fukntionsnamen?

Grüße,
ich hoffe ich stehe nicht auf dem Dach einer Schlauchfabrik, aber ich habe hier etwas code, und es sieht so aus, als gäbe es funktionen die da aufgerufen werden nicht.

stattdessen wird der name der "aufgerufenen Funktion" anscheinend zerlegt, und abhängig von schlüsselwörter wird dann die "Funktion" zusammengesetzt - ich blicke da etwas schwer durch - aber

1)ist das möglich oder missverstehe ich da was?
2)wenn ja - wo kann ich was dazu lesen? nie zuvor von sowas gehört...

danke und
MFG
bleicher

--
__________________________-

FirefoxMyth
  1. Hallo,

    ich hoffe ich stehe nicht auf dem Dach einer Schlauchfabrik

    *g*

    aber ich habe hier etwas code, und es sieht so aus, als gäbe es funktionen die da aufgerufen werden nicht.
    stattdessen wird der name der "aufgerufenen Funktion" anscheinend zerlegt, und abhängig von schlüsselwörter wird dann die "Funktion" zusammengesetzt - ich blicke da etwas schwer durch - aber

    1)ist das möglich oder missverstehe ich da was?
    2)wenn ja - wo kann ich was dazu lesen? nie zuvor von sowas gehört...

    Wenn das, was du da vor dir hast, tatsächlich C oder C++ ist, dann ist das garantiert ein Missverständnis oder eine Fehlinterpretation von dir. Denn C/C++ sind Sprachen, die üblicherweise compiliert werden - und nach dem Compilieren und Linken gibt es keine Bezeichner mehr. Die Information darüber, wie eine bestimmte Funktion, Struktur oder Variable im Quelltext hieß, ist im fertigen ausführbaren Code nicht mehr vorhanden (Ausnahme: Exportierte Symbole in Shared Libraries bzw. DLLs).

    Was hast du denn da für mysteriöse Dinge?

    So long,
     Martin

    --
    Männer sind ungerecht: Sie sehen immer nur den Baum, den eine Frau mit dem Auto gerammt hat. Aber die vielen Bäume, die sie nicht einmal gestreift hat, sehen sie nicht.
    Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
    1. Grüße,
      ich darf den code nicht "mitnehmen" - aber es schreibt sich wie bsp:

      Void extrakt ## name ## Vector(....

      und es kann zB extractBlaVector() aufgerufen werden (mehrer bla Verionen)...

      MFG
      bleicher

      --
      __________________________-

      FirefoxMyth
      1. Hallo,

        Void extrakt ## name ## Vector(....

        hier hast du es mit Konkatenation innerhalb von Makros zu tun. Es handelt sich dabei also um einen Schritt der vom Präprozessor ausgeführt wird und nicht vom Compiler.

        Mehr Infos z.B. unter http://gcc.gnu.org/onlinedocs/cpp/Concatenation.html

        Gruß, andiv

        1. Grüße,

          Mehr Infos z.B. unter http://gcc.gnu.org/onlinedocs/cpp/Concatenation.html

          ah! häte nicht gewusst danach zu googeln, danke schön!
          MFG
          bleicher

          --
          __________________________-

          FirefoxMyth
  2. Hallo,

    ich hoffe ich stehe nicht auf dem Dach einer Schlauchfabrik, aber ich habe hier etwas code, und es sieht so aus, als gäbe es funktionen die da aufgerufen werden nicht.

    stattdessen wird der name der "aufgerufenen Funktion" anscheinend zerlegt, und abhängig von schlüsselwörter wird dann die "Funktion" zusammengesetzt - ich blicke da etwas schwer durch - aber

    Idee 1: Funktionszeiger bzw. Methodenzeiger
    Einem Funktionszeiger wird je nach Parameter die Adresse einer passenden Funktion zugewiesen und die Funktion anschließend über den Zeiger aufgerufen.

    Idee 2: Funktoren
    Durch Überladen des ()-Operators kann man Klassen wie Funktionen benutzen. Durch Kombination mit anderen Operator-Überladungen könnte man dann auch Funktionen zusammensetzen.

    Wenn du mir einen Teil des Codes zeigst kann ich dir vielleicht genauer sagen um was es sich handelt.

    Gruß, andiv