GCC Position der Funktionen im Programm

Gast #1364084
Lesenswert?

Hallo

Ich war bisher der Annahme, dass die Position von Funktionen im Programm 
irrelevant sei, da der Compiler ohnehin bei main beginnt und von dort 
aus auf die benötigten Funktionen zugreift. Folgender Code bringt 
allerdings die Fehlermeldung "warning: implicit declaration of function 
'Funktion1'


(void) main (void)
 {
 ...
 Funktion1();
 ...
 }

void Funktion1 (void)
 {
 ...;
 }



dreht man den Spieß um, dann wird der Code ohne Fehlermeldung 
compiliert:


void Funktion1 (void)
 {
 ...;
 }

(void) main (void)
 {
 ...
 Funktion1();
 ...
 }



Ist das normal so?
mfg Merk L
#1364103
Lesenswert?

Merk L schrieb:

> Ist das normal so?

Ja, denn an der Stelle wo die Funktion aufgerufen wird, muss der 
Compiler bereits den Prototyp der Funktion kennen. Die erste Variante 
sieht korrekt dann so aus:
1
void Funktion1 (void);
2

3
(void) main (void)
4
 {
5
 ...
6
 Funktion1();
7
 ...
8
 }
9

10
void Funktion1 (void)
11
 {
12
 ...;
13
 }
#1364111
Lesenswert?

Merk L schrieb:
> Hallo
>
> Ich war bisher der Annahme, dass die Position von Funktionen im Programm
> irrelevant sei, da der Compiler ohnehin bei main beginnt und von dort
> aus auf die benötigten Funktionen zugreift.

Und was, wenn die Funktion in einer ganz anderen Datei ist?

De Ausführung des Programms beginnt immer bei main()

Aber wenn der Compiler dein Pogramm übersetzt, geht er den Text von oben 
nach unten durch. Und zwar nur einmal.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren