Willkommen ~Gast!
Registrieren || Einloggen || Hilfe/FAQ || Staff
Probleme mit der Registrierung im Forum? Melde dich unter registerEin Bild.
Autor Beitrag
000
29.12.2003, 14:37
BRoDO



moin,
wisst ihr was das inline vor manchen funktionen bedeuten soll, bzw. wozu das gut ist??

--

[ Kein STEAM | Kein TGC/TCPA | Keine Softwarepatente |Keine Alternativ-OS-Propaganda in Windows-Threads | Keine Bewertungen ][KEIN GARNIX!]

zum Seitenanfang zum Seitenende Profil || Suche
001
29.12.2003, 15:06
Spike



bei inline funktionen wird der code der funktion dahin geschrieben, wo die funktion aufgerufen wird.
das ist ein vorteil bei kleinen funktionen, die sehr häufig aufgerufen werden, da dann nicht mehr zwischen normaler programmausführung und der funktion hin und her gesprungen wird.
der nachteil ist halt, dass die kompilierte datei dann größer wird.

edit: rechtschreibfehler ;) ich will endlich ne vorschaufunktion.

--

Kill? Box? Killbox!
Die Intelligenz ist eine Konstante, nur die Bevölkerung wächst.


Dieser Beitrag wurde am 29.12.2003 um 15:08 von Spike_900 bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
002
29.12.2003, 16:00
BRoDO



thx für die info.
also vor kleine funktionen die man oft braucht ein inline schreiben - dann mach iich das mal...

--

[ Kein STEAM | Kein TGC/TCPA | Keine Softwarepatente |Keine Alternativ-OS-Propaganda in Windows-Threads | Keine Bewertungen ][KEIN GARNIX!]

zum Seitenanfang zum Seitenende Profil || Suche
003
29.12.2003, 17:26
Kriz



Vor SEHR kleinen Funktionen bitte (z.B.):

Quellcode:inline int X::getInt(void) const
{
    return m_integer;
}
usw.

Alles, was mehr als 1 Codezeile (also mit ; abgeschlossen) benötigt, hat in inline Funktionen nichts zu suchen!

--

K:R-I)Z++
"CSS ist cascading style sheets. Und nicht so'n Ranzspiel." - dp
In memory of Voice († 2005/03/30)

zum Seitenanfang zum Seitenende Profil || Suche
004
29.12.2003, 17:37
[RMen]OneStone



Macht gcc AFAIK ab O2 automatisch.

--

georg-wicherski@pixel-house.net | http://www.pixel-house.net/ - Coding Resource| http://www.google.de/

zum Seitenanfang zum Seitenende Profil || Suche
005
29.12.2003, 18:36
CN



zusätzlich, ergänzung oso: (cplusplus.com)

Zitat:
The only difference between defining a class member function completely within its class and to include only the prototype, is that in the first case the function will automatically be considered inline by the compiler, while in the second it will be a normal (not-inline) class member function.

--


Dieser Beitrag wurde am 29.12.2003 um 18:36 von CN bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
006
30.12.2003, 12:55
Prefect



Übrigens muss sich der Compiler um ein inline nicht kümmern - das wird bei Bedarf einfach stillschweigend ignoriert.

cu,
Prefect

--

Widelands - Gemütliche Aufbaustrategie, Free Software
Noch ein Blog - Lerne, wie die Welt wirklich ist, aber vergiss niemals, wie sie sein sollte.

zum Seitenanfang zum Seitenende Profil || Suche
007
30.12.2003, 12:58
Mazze



Allerdings ist das nur eine Empfehlung an den Compiler und nichts Makro-ähnliches. Das ist ein wichtiger Zusatz, da man nicht davon ausgehe kann, dass eine Funktion wirklich "geinnlined" wird.
Allerdings weiß eh der Compiler besser, welche Funktion inline definiert wird und welche aufgerufen wird...

cu

--

BattleTech-MOD:
http://bthl.unitedgaming.net/

zum Seitenanfang zum Seitenende Profil || Suche
008
30.12.2003, 20:25
Leviathan



Man kann inline-Funktionen auch dazu verwenden, um einen Linker-Fehler zu verhindern:
Implementiert man eine Funktion in einer Header-Datei und included diese in mehrere Quellcode-Dateien, so steht der Funktionscode in allen Objektdateien, die aus den Quellcodedateien kompiliert werden, daher findet der Linker mehrere Implementierungen für die gleiche Funktion(süberladung). Setzt man ein inline, so steht der Funktionscode nicht als Funktion in den Objektdateien, sondern halt inline, damit gibt es auch keinen Linker-Fehler mehr.
Das funktioniert allerdings nur solange der Compiler das nicht ignoriert.

Wenn man sein Programm allerdings richtig designt ist das gar nicht nötig, denn in Header-Dateien gehören nur Prototypen, keine Implementierungen.

--

Entities: HL | HL²
Kompilierfehler
r_speeds | mehr über r_speeds

zum Seitenanfang zum Seitenende Profil || Suche
009
30.12.2003, 21:08
[RMen]OneStone



Man kann inline Funktionen auch verwenden, ohne das sie wirklich verwendet werden.
(Der tiefe Sinn dieses Post sei dem unwissendem 0815 ThWler verwehrt)

--

georg-wicherski@pixel-house.net | http://www.pixel-house.net/ - Coding Resource| http://www.google.de/

zum Seitenanfang zum Seitenende Profil || Suche
010
01.01.2004, 14:01
Prefect



Leviathan, das ist so zur Hälfte korrekt. Auch eine inline-Funktion kann in einer Objektdatei auftauchen, sonst wäre der Fall, dass eine inline-Funktion nicht geinlinet wird, nicht lösbar.
Allerdings ist die Funktion in einem speziellen Linkersegment definiert, das dem Linker mitteilt, dass doppelte Definitionen der Funktion einfach ignoriert werden können. Dasselbe Prinzip wird übrigens bei Templateinstanziierungen und anderen impliziten Funktionen und Datenstrukturen (VMT, RTTI) auch verwendet.

cu,
Prefect

--

Widelands - Gemütliche Aufbaustrategie, Free Software
Noch ein Blog - Lerne, wie die Welt wirklich ist, aber vergiss niemals, wie sie sein sollte.

zum Seitenanfang zum Seitenende Profil || Suche