static und extern kombinierbar?
-
Hallo,
ich habe eine Frage zur Kombination von "extern" und "static":
Kann ich in einem file.c eine static Funktion definieren und diese in einem file.h mit "extern" irgendwie einbinden? Mir geht es hierbei mehr um uebersichtlichkeit und die Auffuehrung von allen Funktionen, die im .c File auch definiert werden. Leider bekomme ich immer einen Fehler.file.c
#include "file.h" // ... static int value; static void func(){};
file.h
#ifndef STATICEXTERN #define STATICEXTERN extern static value; extern static void func(); // ... #endif
nehme ich ein "extern" her, meckert de Compiler ueber "multiple storage classes", nehme ich kein extern her, jammert er ueber mehrere Definitionen. Ich wuerde gerne static verwenden, da diese Funktionen/Werte nur einmal im Program und zwar innerhalb der von der Code Datei beschriebenen Struktur verwendet werden sollen (C89, gcc).
Kann ich also eigentlich "static" Funktionen Deklarieren und woanders Definieren?
Danke.
-
'static' bedeutet "lokal innerhalb der Übersetzungseinheit", 'extern' "irgendwo in einer anderen Übersetzungseinheit" - das widerspricht sich ein wenig. Wozu ist es denn überhaupt nötig, deine statischen Variablen und Hilfsfunktionen im Header zu erwähnen?
-
Stimmt, das ist wiederspruechlich. Ich bin aber auch gerade am ausprobieren.
Der einzigste Zweck, warum ich das machen wollen wuerde, waere um im .h File eben eine "Uebersicht" ueber alle Funktionen zu haben, wie ich das etwa auch in C++ habe - aber ich weiss von gerade Templates in C++ aehnliche Probleme mit .c und .h Files und extern Deklarationen.
Also, somit ist eine Kombination von "extern" und "static" nicht moeglich, weil unsinnig!? Gut, danke!