C++, Dynamische Fukntionsnamen?
bleicher
- programmiertechnik
0 Der Martin0 andiv
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
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 - aber1)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
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
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
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
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