Ich verstehe, dass dies inline
für sich genommen ein Vorschlag für den Compiler ist und nach eigenem Ermessen die Funktion einbinden kann oder nicht, und dass er auch verknüpfbaren Objektcode erzeugt.
Ich denke, dass static inline
dies dasselbe tut (kann oder kann nicht inline sein), aber keinen verlinkbaren Objektcode erzeugt, wenn es inline ist (da kein anderes Modul darauf verlinken könnte).
Wo extern inline
passt das ins Bild?
Angenommen , ich eine Präprozessormakro durch eine Inline - Funktion ersetzt werden soll und verlangen , dass diese Funktion inlined wird ( zum Beispiel , weil es die verwendet __FILE__
und __LINE__
Makros , die für die Anrufer lösen sollen aber nicht so genannt Funktion). Das heißt, ich möchte einen Compiler- oder Linkerfehler sehen, falls die Funktion nicht inline wird. Tut extern inline
das? (Ich gehe davon aus, dass es keine andere Möglichkeit gibt, dieses Verhalten zu erreichen, als sich an ein Makro zu halten.)
Gibt es Unterschiede zwischen C ++ und C?
Gibt es Unterschiede zwischen verschiedenen Compiler-Anbietern und -Versionen?