Ich arbeite an etwas Code, den ich nicht geschrieben habe und bemerkte, dass es viele extern void my_func();
gibt.
Mein Verständnis ist, dass extern
für globale Variablen, nicht für Funktionen.
Gibt es einen praktischen Grund, eine Funktion als extern
zu deklarieren, anstatt sie in eine Header-Datei zu schreiben und diese einzuschließen? Oder ist das nur eine stilistische Wahl?
Dies wird nur benötigt, wenn die Header-Datei aus irgendeinem Grund die Funktion nicht deklariert. Und extern
ist für Funktionen immer nicht notwendig, da Funktionen standardmäßig immer extern
sind.
Eine Verwendung von extern
functions setzt voraus, dass Sie zwei Module haben: modul_a (implementiert in module_a.h
und module_a.c
Dateien), modul_b (implementiert in module_b.h
und module_b.c
Dateien). Jetzt möchten Sie eine bestimmte Funktion von module_b in module_a verwenden. Aber Sie möchten nicht die gesamte Funktionalität von module_b in module_a aufdecken. In diesem Fall können Sie anstelle von #include "module_b.h"
extern
nur den erforderlichen Funktionsprototyp verwenden.
Reicht es nicht, den Prototyp in Ihrer * .c-Datei vor der Verwendung der Funktion zu deklarieren, anstatt die ganze Header-Datei einzuschließen? Keine Notwendigkeit, extern für Funktionen zu verwenden. Ich habe es noch nicht versucht, aber es sollte so funktionieren.