Jeder Quelltext besteht aus einer Reihe von Deklarationen. EIne
Deklaration definiert einen Namen für eine im Programm verwendete
Größe und hat gegebenenfalls noch andere Konsequenzen seitens des
übersetzers zur Folge. Deklariert man z.B. eine Variable vom Typ
int
mit dem Namen x
, so wird entsprechend der Größe
des angegebenen Typs Speicher reserviert. Im weiteren Verlauf der
Übersetzung ,,kennt`` der Übersetzer nun diesen Namen x
und
assoziiert mit ihm die entsprechende reservierte Speicherstelle.
Es ist auch möglich, eine Variable extern
zu deklarieren. Das
bedeutet, daß es eine Variable des angegebenen Typs bereits gibt oder
geben wird,. in einem anderen Modul, und sich alle Referenzen auf diesen
Namen auf die Variable beziehen sollen.
Daklariert man eine Funktion nebst zugehörigem Funktionsrumpf, so wird semantisch gleichwertiger Maschinencode erzeugt, und für diesen ebenfals Speicher reserviert. Im weiteren Verlauf der Übersetzung ,,kennt`` der Übersetzer nun die ,,Signatur`` der Funktion (Namen, Anzahl und Typ der Parameter, Rückgabetyp) und assoziiert den erzeugten Maschinencode mit dem Namen der Funktion. Er kann, wenn die Funktion aufgerufen wird, einen Sprung auf den Maschinencode übersetzen, Checken, ob Nazahl und Typ der übergabeparameter stimmen, evtl. Daten in den angegebenen Typ konvertieren etc.