www.mikrocontroller.net

Forum: Compiler & IDEs int main (void) oder void main(void)


Autor: Dummkopf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tach

Was für einen Sinn hat es, die main-Funktion mit einem Rückgabewert zu 
versehen?

int main(void) liefert einen Wert der jedoch von niemandem 
entgegengenommen wird.


Richtig?

Autor: Ulrich (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wenn ich ein anderes Programm aufrufe und dies durchgelaufen ist, 
interessiert es mich ab und zu obs erfolgreich war. dies erkenne ich oft 
am exit-code des Programms. Von dem her ist es schon sinnvoll!!!

Autor: Stefan Salewski (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
int main(void) liefert einen Wert ans Betriebssysten zurück, meist 0 für 
Erfolg. Dieser Wert kann dann von anderen Programmen ausgewertet bzw. 
darauf reagiert werden, z.B. in Scripten.

Aber wenn man kein Betriebssstem hat, sondern nur Windows, dann kann man 
vielleicht nicht viel mit dem Rückgabewert anfangen.

Autor: pumpkin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
stichwort "ANSI-C" wenn ich nicht irre. ich finde es sauberer, kann aber 
auf µC getrost weggelassen werden.

pumpkin

Autor: Hans-jürgen Herbert (hjherbert) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also, mein avr-gcc will

int main(

sehen, sonst meldet er error: '::main' must return 'int'


Autor: Dummkopf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ja eben.... ich rede ja auch von µC.... und nicht von PC Programmen.

dort ist kein "höheres" Programm als die main(). Von daher ziemlich 
sinnlos.

Warum AVRStudio diesen Rückgabewert verlangt ist mir auch nicht klar.

Autor: pumpkin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
dann defintiv ANSI-C. das ist halt 'brauch'.

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

Bewertung
0 lesenswert
nicht lesenswert
Hi

und ändert die Codegröße beim avrgcc (-Os) auch nicht.

Matthias

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hans-jürgen Herbert wrote:

> sehen, sonst meldet er error: '::main' must return 'int'

Was bei C halt nur eine Warnung ist, ist bei C++ oft ein Fehler.

Autor: Werner B. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> und ändert die Codegröße beim avrgcc (-Os) auch nicht.

Im Gegenteil. Mit dem return wird der Code kürzer.
Kannst du ja mal ausprobieren.

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

Bewertung
0 lesenswert
nicht lesenswert
Hi

kann ich nicht bestätigen.
Matthias@modframe ~
$ avr-gcc -v
Reading specs from C:/Programme/WinAVR/lib/gcc/avr/3.4.5/specs
Configured with: ../gcc-3.4.5/configure --prefix=/c/WinAVR --target=avr --enable-languages=c,c++ --with-dwarf2 --enable-win32-registry=WinAVR
Thread model: single
gcc version 3.4.5

Matthias

Autor: Marco Beffa (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Manchmal läuft halt ein OS auf dem uC (besonders bei etwas gröberen 
Geschützen).. Und da ist es schon sinnvoll wenn der aufgerufene Dienst 
nach Beendigung etwas zurück gibt...wie es ja unter Windwos etc. üblich 
ist.

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.