002
17.07.2007, 12:46 Uhr
0xdeadbeef
Gott (Operator)
|
Kommt ein bisschen auf die Sprache an, was das macht. In C ist zu beachten, dass inline-Funktionen (die es übrigens erst in C99 gibt) statische linkage haben, d.h. nur im jeweiligen Modul verfügbar sind.
In C++ ist es etwas komplizierter - inline-Funktionen habe da externe linkage. Die Funktion muss für definiertes Verhalten dann in allen Modulen, die sie benutzen, gleich definiert sein, und das Symbol hat dann im gesamten Prozess die gleiche Adresse. Da wird ein bisschen Linkermagie gezogen
Außerdem kann der Compiler die Funktion aus Modulen, in denen sie nicht benutzt wird, wegoptimieren - das ist aber eigentlich nie wirklich von Bedeutung. Im Moment fällt mir als einziges caveat ein, eine DLL zu bauen, die ein inline-Symbol exportiert...aber in dem Fall macht es erstaunlich wenig Sinn, die Funktion inline zu deklarieren, also meh. -- Einfachheit ist Voraussetzung für Zuverlässigkeit. -- Edsger Wybe Dijkstra |