Im globalen Zusammenhang, also auf Modulebene, schränkt es den Gültigkeitsbereich der
so markierten Variable oder Funktion auf das Modul ein.
Das bedeutet : innerhalb des Moduls steht die Variable oder Funktion überall zur Verfügung,
außerhalb des Moduls ist sie unbekannt. Daraus ergibt sich zudem, daß der Bezeichner
außerhalb des Moduls beliebig anders verwendet werden darf, diese Verwendung ist dann innerhalb
des Moduls, in dem der Bezeichner als "static" markiert ist, nicht bekannt.
Eine innerhalb eines Blocks als "static" markierte Variable ist nur innerhalb dieses Blocks bekannt.
Sie verliert aber ihre Gültigkeit beim Verlassen des Blocks nicht.
Das bedeutet zum einen, der Speicherplatz wird nicht auf dem Stack reseviert. Zum anderen bleibt der
beim Verlassen des Blocks in der Variable enthaltene Wert erhalten und steht beim erneuten Betreten
des Blocks wieder zur Verfügung.
Ist eine Variable oder Funktion "extern" deklariert, zeigt dies an, daß ihre Definition außerhalb des aktuellen Blocks oder Moduls liegt. Das wird hauptsächlich in Headerdateien verwendet, um solche Variablen oder Funktionen in anderen Modulen bekannt zu machen. Landet dadurch diese Deklaration im gleichen Modul wie die Definition, wird das "extern" ignoriert.