Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » braucht man kein return in main() ??

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: [ 1 ] > 2 <
010
01.08.2004, 14:41 Uhr
Hans
Library Walker
(Operator)


Hi,

klar, darum geht's in der Frage oben. Aber: Das ganze ist doch nur Sinnvoll, wenn es auf der Maschine ein Betribssystem gibt, das weitere Programme verwalten kann, und die Kontrolle wieder übernimmt, wenn das Programm beendet wurde. Dabei kann es sich um einen PC handeln, aber auch ein Handheld oder ein Handy ist möglich. Mein Beispiel mit dem Controller geht aber davon aus, das es kein BS gibt, weil z.B. gar kein Speicherplatz dafür vorhanden ist. In diesem Fall ist void main() sinnvoller, auch wenn der Standard etwas anderes verlangt. Aber der geht ja auch davon aus, das es ein BS gibt, auf dem das Programm läuft. - Appropos BS: An wen oder was soll die main-funtion eines BS eigentlich etwas zurück liefern??

Hans
--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.

Dieser Post wurde am 01.08.2004 um 14:52 Uhr von Hans editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
011
01.08.2004, 15:14 Uhr
Spacelord
Hoffnungsloser Fall



Zitat von Hans:
Appropos BS: An wen oder was soll die main-funtion eines BS eigentlich etwas zurück liefern??

Hans

Unter Windows sieht das etwa so aus:

Das Betriebssystem prüft ob das zu startende Programm ein GUI- oder eine Konsolenanwendung ist.Im Falle einer Konsolenanwendung wird das Konsolenfenster bereitgestellt und anschliessend wird die Startfunktion(mainCRTStartup) der C/C++ Laufzeitbibliothek aufgerufen.Diese initialisiert die Laufzeitbibliothek und legt globale und statische Variablen an. Anschliessen wird main() aufgerufen und der Rückabewert wird in einer Variablen gespeichert.Jetzt ruft die Startfunktion die Funktion exit,mit dem Rückgabewert von main auf.
exit() führt weitere Aufräumarbeiten durch(Aufruf der Destruktoren globaler und statischer Objekte,Aufruf der Funktionen die mit _onexit(MS) bzw atexit registriert wurden).
Jetzt wird noch die Betriebssystemfunktion ExitProcess mit dem Rückgabewert aus main aufgerufen und das war es für den Prozess. Der Exitcode ist danach aber trotzdem noch für jeden Prozess einsehbar der ein Handle auf die Anwendung hat.

Ob bei Mikrocontrollern main() wirklich der direkte Einsprungpunkt ist?

MfG Spacelord
--
.....Ich mach jetzt nämlich mein Jodeldiplom.Dann hab ich endlich was Eigenes.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
012
01.08.2004, 17:06 Uhr
Hans
Library Walker
(Operator)



Zitat von Spacelord:
Ob bei Mikrocontrollern main() wirklich der direkte Einsprungpunkt ist?


Wo sollte er denn sonst sein? - Ich hab zwar das Beispiel mit der PC-Tastatur nicht nachgebaut, aber soweit wie ich da durchblicke, muss es so sein.
Aber wenn ich im Controller nur 1KB Speicher habe, und damit z.B. 'ne Zeitschaltuhr oder einen primitiven Datenlogger baue, wo sollte dann das BS hin, das main aufruft. Wahrscheinlich wird man ein einfaches Menü in Form einer Portabfrage einbauen, und je nach dem was an den Portbits anliegt, in entsprechende Unterprogramme verzweigen. Das ist dann aber auch schon das ganze "Betriebssystem", das dann durch die main-fkt. selbst repräsentiert wird.
So, und jetzt sollte es eigentlich endgültig klar sein, das ich mich hier auf einen ganz speziellen Fall beziehe, in dem ich void main() für angebracht halte.

Hans
--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
013
01.08.2004, 17:45 Uhr
0xdeadbeef
Gott
(Operator)


Bei Betriebssystemen gibt es keinen Einsprungspunkt im herkömmlichen Sinne, weil es nichts gibt, wovon gesprungen werden könnte. Deswegen werden diese Teile des Betriebssystems in aller Regel auch in Assembler geschrieben.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
014
01.08.2004, 19:56 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


da ja main aber auch in maschinencode übersetzt wird, wird das der compiler für mikrocontroller dann entsprechend für einen übernehmen, oder nicht?
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
015
01.08.2004, 21:31 Uhr
Hans
Library Walker
(Operator)



Zitat von 0xdeadbeef:
Bei Betriebssystemen gibt es keinen Einsprungspunkt im herkömmlichen Sinne, weil es nichts gibt, wovon gesprungen werden könnte.


Ja, das geht doch schon in die richtige Richtung, aber...

Zitat:
Deswegen werden diese Teile des Betriebssystems in aller Regel auch in Assembler geschrieben.

...irgendwie windest Du Dich doch noch. Naja egal. Ich hab keinen Nerv mehr, weitere Erbsen zu zählen. Ich denke aber, das Du verstanden hast, was ich meine, - ich hab auch verstanden, was Du meinst, also lassen wir es dabei.


Zitat von flosoft:
da ja main aber auch in maschinencode übersetzt wird, wird das der compiler für mikrocontroller dann entsprechend für einen übernehmen, oder nicht?

Davon gehe ich aus. Schliesslich ist ja jeder Prozessor so gebaut, das er durch die Hardware intialisierung den Programmzähler auf eine bestimmte Adresse setzt, wo entweder die Startadresse des Programms steht, oder aber das Programm selbst, das es abzuarbeiten gilt.

Hans
--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.

Dieser Post wurde am 01.08.2004 um 21:34 Uhr von Hans editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: [ 1 ] > 2 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: