ANSI C - Extern / Static Functions
-
Hallo Jungs,
ich dachte bisher (bzw. habe das auch in Dokus gelesen), daß wenn man einen Prototypen ohne Angaben von Extern bzw. Static definiert, er automatisch für alle Dateien sichtbar ist.Nur wenn ich explizit static angebe ist die Funktion nur im selbigen C-File sichtbar.
Wenn ich mir jetzt aber die Headerdatei <stdio.h> ansehe, dann ist dort jede Funktion als "Extern" definiert.
Also z.B. sowas:
extern int printf(const char *,...); extern int scanf(const char *,...); extern int sprintf(char *, const char *,...); extern int sscanf(const char *, const char *,...); extern int getchar(void); extern char *gets(char *); extern int putchar(int); extern int puts(const char *);
Gibt es einen ernsthaften Grund warum alle Prototypen im Standard mit Extern definiert sind oder ist das einfach der "Schönheit" halber
Danke
-
Sie sind als extern deklariert, weil sie sich in einem anderen Modul befinden (...extern sind...).
greetz, Swordfish
-
Swordfish schrieb:
Sie sind als extern deklariert, weil sie sich in einem anderen Modul befinden (...extern sind...).
Ja aber laut Doku ist die Funktion ja automatisch extern, wenn sie nicht static ist, oder etwa nicht?
-
Also notwendig ist das extern dort afaik nicht, aber es stört auch nicht, wenn es da steht (und vermutlich war der Autor der Meinung, daß es die Lesbarkeit erhöht).