inline-Funktionen verschleiern?



  • @<Martin>
    Das ist auch ne Möglichkeit. 😉

    @all
    Wäre es denn erlaubt das ganze mit dem extern-Keyword zu regeln oder bringt mir das irgendwelche Nachteile???



  • dürfte unportabel sein und ob er wirklich inlinet ist dann auch ne frage



  • Für die Geschwindigkeit kann es allerhöchstens was bringen, wenn Du
    #include "test.cpp" //sic!
    in Deine cpp-Datei, welche die Test()-Funktion benutzt, mit aufnimmst.
    In der "test.cpp"-Datei solltest Du m. E. auf das "extern" verzichten.



  • extern und inline beißen sich irgendwie.



  • thx @all



  • extern und inline beißen sich irgendwie

    Wieso? extern und inline können völlig legal direkt nebeneinander stehen.

    Früher hatte eine inline-Funktion automatisch static (also internal)-linkage. In Standard-C++ hingegen hat eine inline-Funktion (wie jede andere auch) automatisch external linkage. Das extern ist also überflüssig. Zwischen:

    inline void Bla();
    

    und

    extern inline void Bla();
    

    besteht also kein Unterschied.

    extern hat ansonsten mit inline aber nix weiter zu tun. Insbesondere ändern sich dadurch nicht die Regeln die für inline-Funktionen gelten. Sprich: Die *Definition* einer inline-Funktio/Methode muss in *jeder* Übersetzungseinheit sichtbar sein, in der die entsprechende Funktion/Methode aufgerufen wird.



  • Nunja, das Standardkommitee wird sicherlich einen Grund gehabt haben, inlines extern zu machen. Mir verschließt der sich allerdings. Irgendwelche Ideen?



  • Original erstellt von Bashar:
    Nunja, das Standardkommitee wird sicherlich einen Grund gehabt haben, inlines extern zu machen. Mir verschließt der sich allerdings. Irgendwelche Ideen?

    vielleicht damit der meyers-singleton besser klappt und nicht so viele drucker im system rumalbern?



  • Versteh ich nicht.



  • Hallo,
    hätten inline-Funktionen internal linkage, würde jedes in einer solchen Funktion als statisch deklariertes Objekt mehrfach existieren (einmal pro ÜE).
    Eine getInstance()-Methode nach dem Meyers-Singleton dürfte also nicht inline sein.

    Zudem würde außerdem das nicht inlinen eine inline-Funktion dazu führen, dass mehrere Definitionen einer Funktion generiert werden würden.


Anmelden zum Antworten