37 lines
1.6 KiB
Markdown
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. |