externe funktion inlinen
-
Hallo, ich habe eine Funktion in einer *.obj Datei die ich per extern Deklaration eingebunden habe und auch verwenden kann.
Ich möchte jedoch, dass der Compiler diese Funkion inlined an den Stellen wo sie aufgerufen wird.
Ich möchte die Funktion so verwenden, als hätte ich sie per "static inline" deklariert.Leider sagt das Assembly-Listing, dass er jedesmal die Funktion called.
Ich verwende den VC 9.0.
-
Nachträglich eine Funktion zu inlinen geht nicht, den das Zusammenbauen der obj-Dateien übernimmt der Linker und nicht der Compiler.
-
Th69 schrieb:
Nachträglich eine Funktion zu inlinen geht nicht, den das Zusammenbauen der obj-Dateien übernimmt der Linker und nicht der Compiler.
Hab ich dann überhaupt eine Chance eine Funktion von Außen (nicht C/C++) zu inlinen?
-
Guck mal ob /LTCG (http://msdn.microsoft.com/en-us/library/xbf3tbeh.aspx) als Linkerflag gesetzt ist. Das soll theoretisch beim linken noch inlinen können, tut es aber wohl nicht immer. Profile-Guided Optimization (http://msdn.microsoft.com/en-us/library/e7k32f4k(VS.80).aspx) soll da wohl helfen, aber ich kenne mich mit dem Microsoft Compiler nicht so gut aus.
-
Vielen Dank für deine Antwort. Das hat mich auf jeden Fall weitergebracht.
Jetzt weiß ich, dass es zumindest theoretisch möglich sein müsste. Ich werde mal ein Test-Szenario aufsetzen und ein wenig mit PGO herumspielen. Danke!