Hi Community,
entschuldigt die Anfängerfrage, aber ich finde nirgendwo eine aussage
zum Sachverhalt wie man richtig und sauber eine Funktion als static
deklariert. Genügt es die function im Prototype als static zu
deklarieren oder muss man dies in der definition selbst tun? Oder aber
sowohl als auch?
Was ist richtig(er)?
1 | static void test(void);
|
2 |
|
3 | void test(void){
|
4 | ;
|
5 | }
|
1 | static void test (void);
|
2 |
|
3 | static void test (void){
|
4 | ;
|
5 | }
|
Gefühlsmäßig würde ich auf die erste Variante Tippen, denn der
Geltungsbereich wird über die Deklaration des Prototypen festgelegt. Ist
die funktion nicht Static und soll von einem anderen Module verwendet
werden muss schließlich auch der Prototyp zugänglich gemacht werden.
Vielleicht ist das ein irrtum.
Der GCC kompiliert mir beides, und es scheint beides den selben Effekt
zu haben, aber der GCC "frist ja bekanntlich alles".
Ach und am Rande, mir ist aufgefallen das es Menschen gibt die eine
static Funktion in eine Header-Datei schreiben. Denn Sinn davon verstehe
ich nicht... Ich verstehe eine Header-Datei als eine Art Schnittstelle,
die nur Funktionen, Definitionen, etc. nach außen zugänglich macht die
für die Verwendung des Moduls notwendig sind (Kapselung). Den "Benutzer"
des Modules sollten eigentlich static Funktionen nicht die Bohne
interessieren, die sind quasi privat.