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
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 ;-)
... nur ohne Betriebssystem tut sich die main() schwer wohin zurückzukehren. Auf einem uC sollte sie besser als void main() definiert sein. Gruss, rweber
.... 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.
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.