Avatar ·

Wann sollte man das Schlüsselwort inline für Funktionen und Methoden in C++ verwenden?

Hallo zusammen! Ich bin ein Anfänger in C++-Entwicklung und mich quält ständig die Frage zum Schlüsselwort inline. Ich verstehe zwar, dass es den Code der Funktion an der Aufrufstelle „einfügt“, um den Overhead des Aufrufs zu vermeiden. Aber in der Praxis sehe ich, dass moderne Compiler (GCC, Clang, MSVC) oft selbst entscheiden, ob sie eine Funktion inlinen oder nicht, selbst wenn ich kein inline geschrieben habe. Und umgekehrt, wenn ich inline schreibe, kann der Compiler das ignorieren und nicht inlinen. Am Ende bin ich verwirrt. Hier ist ein Beispiel: ```cpp // Datei utils.h int square(int x) { return x * x; } // Datei main.cpp #include "utils.h" int main() { int a = square(5); return 0; } ``` Wenn ich diese Header-Datei in mehrere .cpp-Dateien einbinde, gibt der Linker einen Fehler wegen mehrfacher Definition aus. Mir wurde gesagt, dass ich inline hinzufügen muss. Aber warum? Schließlich ist square eine kleine Funktion, und der Compiler kann sie sowieso inlinen. Und wenn ich inline hinzufüge, was ändert sich dann? Oder ein anderer Fall: Ich habe eine große Funktion in einer Klasse. Wenn ich