static ausserhalb einer Funktion

Gast #3339212
Lesenswert?

Ich dachte immer das ein static innerhalb einer funktion bedeutet das 
die variable zwischen den funktionsaufrufen beibehalten wird.

Nur warum wird hier ausserhalb einer funktion static verwendet?

Zudem gibt es das wort static auch vor einer funktion, was soweit ich 
weisz dann aber bedeutet das diese funktion nur innerhalb der .c datei 
sichtbar ist.

Nur verstehe ich dann nicht warum man manch eine .h header Datei in 
verschiedenen .c Dateien einbindet um so gewisse funktionen ja gerade 
ueber verschiedene .c Dateien zu teilen.
1
#include "Compiler.h"
2
...
3
#include "string.h"
4
#include "FSconfig.h"
5

6
DWORD MDD_SDSPI_finalLBA;
7
WORD gMediaSectorSize;
8
BYTE gSDMode;
9
static MEDIA_INFORMATION mediaInformation;
10
static ASYNC_IO ioInfo; //Declared global context, for fast/code efficient access
Persönliche Seite #3339366
Lesenswert?

Simon schrieb:
> ok und wie weit ist dann eine Variable ohne static sichtbar?

Mit einer extern - Deklaration kann sie aus jedem anderen C-Modul 
angesprochen werden, da der Linker die Symbolreferenz auflösen kann. 
Wird sie als static definiert, bekommt der Linker keinen Symbolnamen 
angeboten, und ein Zugriff über Modulgrenzen hinweg ist ausgeschlossen.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren