www.mikrocontroller.net

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


Autor: popi (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 ;-)

Autor: popi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
gruß

popi

Autor: rweber (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Hegy (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Marcus (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Μαtthias W. (matthias) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.