Sollte man niemals statische Inline-Funktion verwenden?
Es gibt zwei Implikationen der Verwendung voninline
Schlüsselwort (§ 7.1.3 / 4):
Normalerweise ersetzt jeder Mainstream-Compiler bei Bedarf den Funktionskörper am Aufrufpunkt, um die Funktion zu kennzeichneninline
nur für#1
wird nicht wirklich benötigt.
Weitere w.r.t#2
Wie ich verstehe, wenn Sie eine Funktion als deklarierenstatic inline
Funktion,
Dasstatic
Schlüsselwort für die Funktion erzwingt dieinline
Funktion, um eine interne Verknüpfung zu haben (Inline-Funktionen sind extern verknüpft) Jede Instanz einer solchen Funktion wird als separate Funktion behandelt (Die Adresse jeder Funktion ist unterschiedlich) und jede Instanz dieser Funktionen hat ihre eigenen Kopien von statischen lokalen Variablen und String-Literalen (Eine Inline-Funktion verfügt nur über eine Kopie davon)
Eine solche Funktion verhält sich also wie jede anderestatic
Funktion und das Schlüsselwortinline
hat keine Bedeutung mehr, es wird überflüssig.
So markieren Sie praktisch eine Funktionstatic
undinline
beides nützt gar nichts. Entweder sollte es seinstatic
(nicht am meisten bevorzugt) oderinline
(am meisten bevorzugt),
Also, benutztstatic
undinline
zusammen auf eine Funktionpraktisch nutzlos?