alisasname für funktionen?



  • hi
    ich möchte eine funktion unter zwei namen aufrufen können.

    wenn ich eine referenz auf eine variable erstelle, wird soweit ich weiß kein neuer speicher angefordert.

    gibt es sowas auch für funktionen?
    ich möchte keine funktionspointer nutzen, da ich dann zusätzlichen speicher benötige.



  • nened schrieb:

    hi
    ich möchte eine funktion unter zwei namen aufrufen können.

    wenn ich eine referenz auf eine variable erstelle, wird soweit ich weiß kein neuer speicher angefordert.

    gibt es sowas auch für funktionen?
    ich möchte keine funktionspointer nutzen, da ich dann zusätzlichen speicher benötige.

    1. Wozu brauchst du das?
    2. Ich glaube kaum, dass dir die 4 Bytes eines Funktionspointers, falls sie nicht wegoptimiert werden sollten (du kannst ja einen const-Pointer machen), etwas ausmachen. Wenn du mir begründest, warum dir das so wichtig ist, dann suche ich nach einer Alternative.



  • int foo(std::string m) {
     return m.size();
    }
    
    int bar(std::string m) {
     return foo(m);
    }
    


  • Übrigens, beim zweiten Lesen fällt mir auf: Referenzen brauchen genauso wie Funktionspointer Speicher für den Pointer, wenn sie nicht optimiert werden.

    EDIT:

    int foo(std::string m) {
     return m.size();
    }
    
    const int (*bar)(std::string) = foo;
    


  • Wenn du das ganze gänzlich ohne Overhead haben willst kannst du das auch über ein Makro lösen.
    In wiefern so etwas überhaupt nötig ist weiss ich nicht, vermute allerdings, dass es das nicht wäre.



  • drakon schrieb:

    Wenn du das ganze gänzlich ohne Overhead haben willst kannst du das auch über ein Makro lösen.
    In wiefern so etwas überhaupt nötig ist weiss ich nicht, vermute allerdings, dass es das nicht wäre.

    Das war das, was ich ihm erst nach einer Begründung sagen wollte 😉 .



  • wxSkip schrieb:

    drakon schrieb:

    Wenn du das ganze gänzlich ohne Overhead haben willst kannst du das auch über ein Makro lösen.
    In wiefern so etwas überhaupt nötig ist weiss ich nicht, vermute allerdings, dass es das nicht wäre.

    Das war das, was ich ihm erst nach einer Begründung sagen wollte 😉 .

    daruf bin ich auch gekommen

    so nun zum warum:
    1. interesse
    2. ich habe funktionen mit relativ langen funktionsnamen. anhand der funktionsnamen kann man gleich erkennen, was die funktion macht.
    das ist gut, wenn man die funktionen nicht kennt.
    wenn man sie aber kennt, möchte man nicht dauernd so lange namen schreiben müssen und daher suchte ich nach einer abkürzung.



  • Dann würde ich Funktionspointer verwenden, abgesehen davon, dass wenn jemand den Code mit den kurzen Funktionsnamen liest, wohl nicht verstehen wird, was da passiert.



  • wxSkip schrieb:

    Dann würde ich Funktionspointer verwenden, abgesehen davon, dass wenn jemand den Code mit den kurzen Funktionsnamen liest, wohl nicht verstehen wird, was da passiert.

    Ne.
    Gerade bei der begründung lautet die korrekte antwort: lass es sein.

    Tippfaulheit ist kein grund für sowas. Einfach einen editor mit autocomplete verwenden. Es gibt editoren die aus GLPF ein GetLongPointerFoo machen können. Man muss bei sowas immer an derrichtigen stelle ansetzen...



  • Shade Of Mine schrieb:

    wxSkip schrieb:

    Dann würde ich Funktionspointer verwenden, abgesehen davon, dass wenn jemand den Code mit den kurzen Funktionsnamen liest, wohl nicht verstehen wird, was da passiert.

    Ne.
    Gerade bei der begründung lautet die korrekte antwort: lass es sein.

    Das war die Begründung warum er es sein lassen soll, aber wenn schon Funktionspointer und keine #defines verwenden soll.


Anmelden zum Antworten