programmieren-3-c/a1-5/results.md

37 lines
1.6 KiB
Markdown

# A1-5 Ergebnisse
## a)
1. `int i;` Definition
Der Integer `i` wird deklariert und erhält eine Speicheradresse, ist also auch definiert.
2. `extern int summe(int a, int b);` Deklaration
Die Existenz der Funktion wird durch den Funktionskopf deklariert. Die Definition der Funktion erfolgt jedoch durch einen Funktionskörper der hier nicht existiert.
3. `int summe(int a, int b) { return a + b; }` Definition
Es ist sowohl ein Funktionskopf, als auch ein Funktionskörper vorhanden. Somit handelt es sich um eine Definition.
4. `extern int k;` Deklaration
`extern` bedingt eine Deklaration ohne Definition. Es wird festgelegt, dass die Deklaration an einem anderen Ort stattfindet.
5. `typedef int Entfernung ;` Deklaration
Es wird nur ein neuer Datentyp deklariert, ohne dass ein Wert definiert wird.
6. `Entfernung hannoverNachHamburg;` Definition
Ähnlich wie bei 1.: es wird eine Variable deklariert **und** definiert
## b)
`#include` bzw Header-Dateien dürfen lediglich Deklarationen enthalten, da ansonsten eine Definition mehrfach erfolgen könnte, was zu einem Compilerfehler führt.
## c)
Bei dem Einbinden einer unnötigen Header-Datei wächst die Dateigröße der Objektcode-Datei `main.o` **nicht**.
Die Header-Datei wird zwar vom Präprozessor eingebunden, jedoch enthält diese nur Informationen für den Compiler, dass die Funktion `unnoetige_funktion(void)` an einem anderen Ort definiert wird. Wenn diese Funktion niemals verwendet wird, wird vom Kompilierer auch kein Eintrag gemacht, dass sie benötigt wird. Somit bleibt die Dateigröße unverändert.