Navigation

2.6.6 Blockstruktur und Gültigkeit

Allg. gilt, dass sich die Gültigkeit eines Bezeichners über alle (inneren) geschachtelten Blöcke erstreckt, wenn nicht in einem dieser Blöcke der gleiche Bezeichner neu vereinbart wird:

VERBATIM/b266: 

   int x;           /* externe Definition */

   f() {            /* Beginn Funktionsblock */
      int x;
      ...
      {             /* Beginn Block 1 */
         float x;
         ...
      }             /* Ende   Block 1 */
      ...
   }                /* Ende   Funktionsblock */

Externe Vereinbarungen werden häufig in privaten Headerfiles vorgenommen.

Die folgende Tabelle gibt einen Überblick über Speicherklasse, Gültigkeit und Lebensdauer von Variablen und Funktionen:

Speicher-
klasse
Gültigkeit Lebensdauer angebbar für Standard-
annahmen
auto innerhalb des Blocks, in
dem Variable definiert ist
während Abarbeitung
des Blocks
Variablen innerhalb
von Blöcken
extern
Variable
außerhalb v. Funktionen:
vom Punkt der Definition
bzw. Deklaration bis zum
Ende des Quellfiles;
innerhalb v. Funktionen:
in dem Block, in dem die
Variable deklariert ist
während der gesamten
Programmausführung
Variablen außerhalb v.
Funktionen
extern
Funktion
in allen zum Programm
gehörenden Quellfiles
während der gesamten
Programmausführung
Funktionen falls nicht
static
static
Variable
außerhalb v. Funktionen:
vom Punkt der Definition
bis Ende des Quellfiles;
innerhalb v. Funktionen:
in dem Block, in dem die
Variable definiert ist
während der gesamten
Programmausführung
Variablen keine
static
Funktion
nur in dem Quellfile, in
dem Funktion definiert ist
während der gesamten
Programmausführung
Funktionen keine
register innerhalb des Blocks, in
dem Variable definiert ist
während Abarbeitung
des Blocks
Variablen und
Funktionsparam.
der Typen char,
short, int, long,
unsigned und
Zeiger auf bel.
Datenobjekte
keine
Für die Namen von Bezeichnern gibt es 3 voneinander unabhängige Klassen:
  1. Bezeichner (Namen) von Variablen, Parametern, Funktionen und enum-Elementen
  2. Bezeichner von Struktur-, Union- und Aufzählungstypen
  3. Bezeichner von Struktur- und Union-Komponenten
Namenskonflikte zwischen diesen Bezeichnern können nicht auftreten.

Navigation