Warum würden Sie 'extern void my_func ();' anstatt "my_utils.h" einzuschließen?

8

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?

    
CoolAJ86 06.10.2010, 22:31
quelle

3 Antworten

9

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.

    
Oliver Charlesworth 06.10.2010, 22:34
quelle
-3

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.

    
Donotalo 06.10.2010 23:24
quelle
-3

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.

    
mustafakyr 12.11.2012 15:18
quelle

Tags und Links