Sollte man niemals statische Inline-Funktion verwenden?

Es gibt zwei Implikationen der Verwendung voninline Schlüsselwort (§ 7.1.3 / 4):

EsHinweise Dem Compiler ist die Ersetzung des Funktionskörpers am Aufrufort dem üblichen Funktionsaufrufmechanismus vorzuziehen.Auch wenn die Inline-Ersetzung weggelassen wird, gelten die anderen Regeln (insbesondere w.r.tEine Definitionsregel) für Inline werden befolgt.

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#2Wie 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?

Antworten auf die Frage(5)

Ihre Antwort auf die Frage