Avatar ·

Was macht extern "C" in C++ und wofür wird es benötigt?

Hallo zusammen! Ich schreibe nicht so lange in C++ und beim Arbeiten mit C-Bibliotheken (z.B. einer alten Grafikbibliothek) stoße ich ständig auf die Konstruktion `extern "C"`. Ich sehe sie in Header-Dateien, verstehe aber nicht ganz, was sie tut. Zum Beispiel habe ich diesen Code: ```cpp // mylib.h #ifdef __cplusplus extern "C" { #endif void my_c_function(int x); #ifdef __cplusplus } #endif ``` Oder wenn ich selbst eine C-Header-Datei einbinde: ```cpp // main.cpp extern "C" { #include "clibrary.h" } ``` Ich habe gelesen, dass das mit "name mangling" (Benennung von Funktionen in der Binärdatei) zusammenhängt, aber ich verstehe nicht genau, wie das funktioniert. Warum findet mein Programm ohne `extern "C"` die Funktion aus der C-Bibliothek nicht und gibt einen Linker-Fehler wie "undefined reference"? Ich habe sie doch deklariert! Erklärt mir bitte als Anfänger: Was genau macht diese Konstruktion, in welchen Fällen ist sie notwendig und wie beeinflusst sie den Kompilierungs- und Build-Prozess?