Auch gerne übersehen wird die Tatsache, daß es ein Unterschied ist, ob eine Deklaration außerhalb oder innerhalb des Gültigkeitsbereiches von main liegt. Nur im ersten Fall ist es eine globale Deklaration, die so deklarierten Variablen und Funktionen sind überall zugänglich (falls sie nicht durch lokale Variablen überschrieben werden). Wäre in unserem ersten Beispiel int i nicht auch global (in der ersten Zeile) deklariert (und definiert), dann wäre der Aufruf von i in funktA nicht möglich, da die Deklaration in main nicht global ist. Das gilt auch, wenn main wie im folgenden vor funktA definiert ist:
void funktA(); void main() { int i=12; // lokale Variable in main funktA(); } void funktA() { cout << i << endl; // Fehler !!!! }