Forum: Mikrocontroller und Digitale Elektronik GCC Position der Funktionen im Programm


von Merk L (Gast)


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

von P. S. (Gast)


Lesenswert?

Merk L schrieb:

> Ist das normal so?

Ja. Ein schneller Blick auf google mit der Fehlermeldung bringt dir 
sicher auch die Erklaerung dafuer. Oder du guckst in dein C-Buch...

von Stefan E. (sternst)


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
 }

von Karl H. (kbuchegg)


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.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.