Forum: Mikrocontroller und Digitale Elektronik Ich bekomme folgende Meldung beim compilieren:


von popi (Gast)


Lesenswert?

Hallo zusammen,

wenn ich kompiliere, (ich arbeite mit AVR-Studio und dem darin
integrierten WINAVR-Compiler) immer die Fehlermeldung:

../vaseb.c:8: warning: control reaches end of non-void function

Tatsächlich handelt es sich lediglich um ein paar Testzeilen:
#include <avr/io.h>
int main(void)
{
   DDRA = 0xFF;
   PORTA = 0xFF;
}

Kann mir bitte jemand, woran das liegt ?

Danke und Grüße

popi

von Thomas (Gast)


Lesenswert?

Deine void Funktion hat einen Rückgabewert vom Type INT.
ALso musst Du einen Wert vom Type Int am Ende der Funktion
zurückgeben!

return 0;

in der Regel gibt man einen Wert zurück, der angibt, ob die Funktion
fehlerfrei war 0 für fehlerfrei, 1 für fehler XY, 2 für fehler XYZ und
so weiter, oder anders ;-)

von popi (Gast)


Lesenswert?

gruß

popi

von rweber (Gast)


Lesenswert?

... nur ohne Betriebssystem tut sich die main() schwer wohin
zurückzukehren. Auf einem uC sollte sie besser als

void main()

definiert sein.

Gruss,
rweber

von Hegy (Gast)


Lesenswert?

.... wobei der gcc dann rummault:
warning: return type of `main' is not `int'

Also doch ein return x reindaengeln, nur damit der Compiler Ruhe gibt.

von Marcus (Gast)


Lesenswert?

Wenn Euch die Meldung stört bzw. der unnötige return:

Einfach mit der GCC Option -ffreestanding compilieren und
main als void definieren.

Gruß, Marcus

von Μαtthias W. (matthias) Benutzerseite


Lesenswert?

Hi

ich bin mir nicht ganz sicher was das -ffreestanding noch so für
Nebeneffekte in Zusammenarbeit mit der avrlibc produziert. Ich würd das
lieber lassen und einfach ein return 0; ans Ende von main schreiben. Das
Programm für den AVR wird deswegen nicht größer wenn eine Endlosschleife
davor steht.

Matthias

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.