- Akku Tests und Balkonkraftwerk Speicher         
Ergebnis 1 bis 4 von 4

Thema: void und int

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    22.10.2007
    Beiträge
    23

    void und int

    Anzeige

    Praxistest und DIY Projekte
    Hallo,

    die Funktion

    Code:
    #incude<avr/io.h>
    
    int main(void)
    {
       DDRA=0xFF;
    
       while(1)
       {
       PORTA^=0xF;
       }
    }

    gibt doch keinen Wert zurück und empfängt auch keinen Wert.

    Warum kommt die Fehlermeldung


    "warning: return type of 'main' is not 'int'"


    wenn ich schreibe

    Code:
    void main(void)
    Es geht mir hier nur um das Verständnis:

    Warum muss die main-Funktion mit Typ integer deklariert werden? Sie ist doch void. Es gibt doch gar keinen Return?!

    In den Tutorials habe ich bisher keine Erklärung gefunden.


    Udo

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    06.02.2005
    Ort
    Hamburg
    Alter
    38
    Beiträge
    4.255

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    21.07.2008
    Ort
    Moosburg
    Alter
    46
    Beiträge
    49
    Hi!

    "main" ist bei C immer die Funktion, die nach dem Laden des Programms ausgeführt wird.
    "int main(...)" ist hier meines Erachtens ein Vermächtnis von "richtigen Rechnern" (die Controller-Community mag mir diesen Ausdruck verzeihen) und macht nur dann wirklich Sinn, wenn das Programm von einem Betriebssystem aufgerufen wird.

    Bei allen Betriebssystemen liefert ein Programm bei seiner Beendigung (= Verlassen von main) einen Exit-Code, der dem Aufrufer (z.B. Shell unter Unix) mitteilt, ob das Programm einen Fehler produziert hat (evtl auch welcher) oder ob der Programmlauf normal war.
    In Deinem Fall müsstest Du einfach am Ende von main() "return 0;" einfügen. Ohne Betriebssystem sollte das Programm sowieso nie aus main() rauslaufen, da man sonst das Verhalten des Systems nicht mehr vorhersagen kann (Controller springt irgendwo in den Speicher und führt irgendwelche Befehle aus, die zufällig dort im Speicher stehen)

    Ich hoffe, das konnte Dir ein bisschen weiterhelfen. Bei Fragen einfach fragen!


    Viele Grüße,

    Markus

  4. #4
    Neuer Benutzer Öfters hier
    Registriert seit
    22.10.2007
    Beiträge
    23
    Danke für diese Erklärung. Wenn man die Zusammenhänge kennt, erleichtert es weitere Tutorials zu verstehen.

    Udo

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Labornetzteil AliExpress