Ich verstehe, dass dies inlinefü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 inlinedies 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 inlinepasst 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 inlinedas? (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?