register?
-
Tja, wir sind tatsächlich schon so weit, dass wir Maschinen um einen Gefallen bitten müssen
-
Wenn die Compiler schlauer sind als wir, dann sollten wir nicht bitten, sondern nur dankbar sein.
-
mit inline verhält es sich ja genauso: der Compiler entscheidet. Das ist durchaus sinnvoll: z.B. bei einer rekursiven Funktion.
-
c++eus schrieb:
mit inline verhält es sich ja genauso: der Compiler entscheidet. Das ist durchaus sinnvoll: z.B. bei einer rekursiven Funktion.
Nein, inline hat auch eine andere Bedeutung. Nämlich dass eine inline Funktion in einem Header definiert werden darf.
-
Ja,
aber inline hat eigentlich die Bedeutung, dass bei einer kleinen Funktion (z.B. bei get-set-Methoden) der Quellcode ersetzt wird, und so der Funktionsheader wegfällt. (In c wurde dies zumeist mit #define gelöst, was aber unsauber ist.)
-
Beim VC++ kann man allerdings das inlinen mit __forceinline erzwingen. Geht bei rekursiven Funktionen natürlich trotzdem nicht.
-
aber das ist kein iso C++.
-
Optimizer schrieb:
Beim VC++ kann man allerdings das inlinen mit __forceinline erzwingen.
Nein, kann man auch nicht.
Du kannst ihm nur sagen: 'Inline nur Funktionen die __forceinline sind', aber nicht 'Inline alle Funktionen die __forceinline sind'.
-
Das stimmt so nicht. inline gibt dem Compiler den Hinweis, dass er doch bitte nachprüfen möchte, ob es sich lohnen könnte, die Funktion zu inlinen.
Bei __forceinline findet diese Prüfung nicht statt.
QuelleDass das kein ISO C++ ist, stört mich eigentlich relativ wenig, weil ich die Erweiterungen von M$ sehr sinnvoll finde (auch wenn ich jetzt nicht speziell __forceinline nutze).
-
@Optimizer:
Ja, die Kosten/Nutzen Analyse faellt flach, aber es gibt Funktionen die trotzdem nicht geinlinet werden koennen.
-
Jo, hab ich ja gesagt.
Betrifft z.B. rekursive Funktionen.
-
Ich sehe den Sinn von __forceinline nicht wirklich. Im Endeffekt wird der Compiler schon testen, ob man die Funktion inlinen kann oder nicht und das ist wahrscheinlich optimaler, als in den Optimierungsprozess einzugreifen.
-
kingruedi schrieb:
Ich sehe den Sinn von __forceinline nicht wirklich.
ich auch nicht
Habs noch nie verwendet - denn inlinen kann der Compiler sowieso besser als ich.