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.