funktionsaddresse nach void* casten



  • hallo!

    ich muss gerade addressen von funktionen in einem container speichern und konvertiere sie dazu in void*-zeiger. eigentlich ist das verboten. funktioniert das wenigstens oder gibt es da einen anderen weg?

    ps: es sind alles c-funktionen



  • kaiser von china schrieb:

    ps: es sind alles c-funktionen

    Dann sollte es funktionieren. Wenn du sicher gehen willst, dass das funktioniert, dann schau nach, dass der sizeof-Operator für beide Pointer die gleiche größe liefert. Dann sollte das klappen.



  • eigentlich ist das verboten

    Wär mir neu... du musst sie einfach wieder zurück- casten.
    Edit: Ok, nach dem Beitrag von ProgChild scheint es wirklich nicht sehr sauber.

    ich muss gerade addressen von funktionen in einem container speichern

    Warum void*? Mache doch ein Array (oder, da Du ja ins C++ Forum postest, ein std::vector o.ä.) und speichere die Function Pointer.

    Simon



  • ProgChild schrieb:

    Dann sollte es funktionieren. Wenn du sicher gehen willst, dass das funktioniert, dann schau nach, dass der sizeof-Operator für beide Pointer die gleiche größe liefert. Dann sollte das klappen.

    danke. werde ich machen.

    Warum void*? Mache doch ein Array (oder, da Du ja ins C++ Forum postest, ein std::vector o.ä.) und speichere die Function Pointer.

    ja, aber welchen typ soll ich da nehmen? void*()(size_t) (std::malloc) oder void()(void*) wie bei std::free?



  • ok problem hat sich erledigt.


Anmelden zum Antworten