Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » include-Blocker

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: [ 1 ] > 2 < [ 3 ]
010
20.04.2004, 13:41 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


es geht eigentlich nur um performance
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
011
20.04.2004, 13:45 Uhr
Guybrush Threepwood
Gefürchteter Pirat
(Operator)


wer streitet denn hier?

ein makro wird wie ein normales define einfach in den Quellcode vor dem kompilieren eingefügt. Eine inline Funktion wird AFAIK halt nur so aufgerufen als würde der Code immer wieder an der stelle stehen. Was jetzt besser ist weiß ich nicht, allerdings sollte man soweit ich weiß funktionen nicht als inline definieren, da der compiler selber entscheidet ob er das annimmt oder nicht.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
012
20.04.2004, 14:09 Uhr
Pablo
Supertux
(Operator)


Ein makro ist mehr C als C++, man sollte in C++ Makros vermeiden (auch laut Stroustrup).

Der Unterschied ein wenn ein Makro vorkommt, es vor der Kompilierung ersetzt wird, so wie Guybrush Threepwood schon gesagt hat.
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
013
20.04.2004, 15:15 Uhr
virtual
Sexiest Bit alive
(Operator)



Zitat:
Lumina postete
Was haben inline-Funktionen für einen Vorteil ggüb. Makrodefinitionen? Welchen Vorteil haben beide ggüb. "normalen" Funktionen?


Vorteile von inline gegenüber Macro:

1. Macros können üble Nebeneffekte haben:

C++:
#define max(a,b) ((a)>(b)? (a):(b))

int function(int x)
{
   ...
}

...
a = max(function(1), 0);
...


Der Aufruf würde expüandiert zu:

C++:
a = function(1)>0? function(1):0;


Je nach rückgabewert von der Funtion, wird diese also ggf ein zweites Mal aufgerufen. Ein Umstand, den man demM macro nicht ohne weiteres ansieht. Bei einer analogen inline Funktion kann das nicht passieren:

C++:
inline int max(int a, int b) { return a>b? a:b; }



2. Macros sind nichtr typsicher, inline Funktionen hingegen schon.


Vorteile von inline gegenüber normalen Funktionen:

Prmär wird hier angesehen, daß inline Funktionen performanter seien, als die normalen Funktionen, weil kein Overhead für den Funktionsaufruf generiert wird.

Dem gegenüber gibt es aber einige Dinge zu bemerken:

1. Der Compiler darf das inline ignorieren, also stillschweigend eine normale Funktion draus machen (die meisten Compiler machen dies ohnehin bei virtuellen Methoden und Funktionen, die sich rekursiv selbst aufrufen).

2. Inline funktionen müssen im header definiert werden. Formal hat das den Nachteil, daß die Trennung von Implementierung und Interface aufgelöst wird, rein praktisch gesehen hat das den Nachteil, daß dies Abhängigkeiten zwischen Modulen erhöht.
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)

Dieser Post wurde am 20.04.2004 um 15:16 Uhr von Pablo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
014
20.04.2004, 17:23 Uhr
ao

(Operator)



Zitat:
virtual postete
Vorteile von inline gegenüber Macro:
Vorteile von inline gegenüber normalen Funktionen:
Dem gegenüber gibt es aber einige Dinge zu bemerken:

Ich füg da noch mal was hinzu:
Vorteil von Macro gegenüber inline: Macros sind ANSI-C, inline nicht. Inline in C-Quellcode macht Probleme, wenn der Code mal portiert werden soll und der Compiler der Zielplattform kein inline versteht.

Die Vorteile von inline gegenüber normalen Funktionen greifen nur dann wirklich, wenn die Funktion nur aus wenigen Statements besteht, so dass der Aufruf verglichen mit der Ausführung des Body tatsächlich teuer ist. Wenn die Funktion lang ist, andere Funktionen ruft, Objekte konstruiert oder Schleifen enthält, ist der inline-Vorteil kaum noch messbar.

Dafür nehmen dann aber die Nachteile zu:

1. Das Executable wird größer, weil der Inline-Code überall dort eingefügt wird, wo die Funktion aufgerufen wird. Das schadet besonders dann, wenn die fertige Software per Internet-Download vertrieben werden soll und die schiere Größe der Binaries potentielle Kunden erst mal abschreckt.

2. Die Compile-Zeiten werden länger, weil auch bei kleinen Änderungen große Codeportionen inkludiert und übersetzt werden müssen und weil die Änderungen nicht mehr lokal auf ein Modul beschränkt sind, sondern viel öfter die Neukompilierung des ganzen Projekts erfordern.

ao
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
015
21.04.2004, 21:33 Uhr
Lumina





so lange Posts... mit soviel hab ich nicht gerechnet, ist aber sehr gut, danke!
--
*******************************************
Willst du glücklich sein im Leben, trage bei zu and'rer Glück,
denn die Freude, die wir geben, kehrt ins eig'ne Herz zurück!
*******************************************
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
016
21.04.2004, 23:05 Uhr
~toxic
Gast



Zitat:
Lumina postete
so lange Posts... mit soviel hab ich nicht gerechnet, ist aber sehr gut, danke!

das liegt wie immer an dem überschuss testosteron hier im forum
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
017
21.04.2004, 23:08 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


@toxic

das hatten wir schonmal... mmc hatte sich extra einen account mit namen Bett-Ina zugelegt um zu testen ob er dann schneller antworten bekommt...
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
018
21.04.2004, 23:13 Uhr
~toxic
Gast


ich bezog aber mehr auf das "so lange Posts..." *gg*
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
019
21.04.2004, 23:36 Uhr
Pablo
Supertux
(Operator)


Immer wieder das eine oder das andere Schwein im Forum ...
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: [ 1 ] > 2 < [ 3 ]     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: