Guten Tag, habe in einem gekauften Quellcode bei fehlgeschlagener Initialisierung die Funktion exit(1)aufgerufen. Ich verstehe nicht ganz was genau damit gemacht wird? Bzw was der Vorteil von dieser Funktion ist? Wird das Programm abgebrochen oder wird einfach eine Endlosschleife aufgerufen? Vielen Dank für Eure Hilfe
http://www.cplusplus.com/reference/cstdlib/exit/ wie genau dein System darauf reagiert, kommt auf den System an.
Peter II schrieb: > wie genau dein System darauf reagiert, kommt auf den System an. Im meinem Fall ein At90Can128 mit dem Atmelstudio7! Danke
quasty schrieb: > Im meinem Fall ein At90Can128 mit dem Atmelstudio7! By default ist exit() dort eine Endlosschleife. Kann man aber auch selbst anders implementieren, falls man bspw. Error-LEDs blinken lassen will oder dergleichen.
Das kommt auf den Compiler an. Mit gcc (newlib) auch auf die Architektur. Aargh64 z.B. schmeißt eine Exception: http://www.sourceware.org/git/gitweb.cgi?p=newlib-cygwin.git;a=blob;f=libgloss/aarch64/_exit.c;hb=HEAD M86K führt "stop #0x700" aus: http://www.sourceware.org/git/gitweb.cgi?p=newlib-cygwin.git;a=blob;f=libgloss/m68k/fido-_exit.c;hb=HEAD oder "halt": http://www.sourceware.org/git/gitweb.cgi?p=newlib-cygwin.git;a=blob;f=libgloss/m68k/cf-exit.c;hb=HEAD MSP430 versucht, eine Funktion im Simulator aufzurufen; ohne Simulator gibt es einen Reset: http://www.sourceware.org/git/gitweb.cgi?p=newlib-cygwin.git;a=blob;f=libgloss/msp430/syscalls.S;hb=HEAD und die portable Version: http://www.sourceware.org/git/gitweb.cgi?p=newlib-cygwin.git;a=blob;f=libgloss/libnosys/_exit.c;hb=HEAD
1 | /* Default stub just causes a divide by 0 exception. */
|
2 | int x = rc / INT_MAX; |
3 | x = 4 / x; |
4 | |
5 | /* Convince GCC that this function never returns. */
|
6 | for (;;) |
7 | ;
|
In der Praxis sollte man exit() nie aufrufen und den gewünschten Effekt selbst programmieren (oder exit() damit ersetzen).
Clemens L. schrieb: > Das kommt auf den Compiler an. der Compiler entscheidet das wohl kaum selber, maximal ist es von der Toolchain abhängig.
Ohnehin, ist es nicht ziemlich sinnfrei das Programm eines µC zu beenden?
Nils H. schrieb: > Ohnehin, ist es nicht ziemlich sinnfrei das Programm eines µC zu > beenden? Ja, ist es. Etwaige Fehlerzustände kann man genau so gut auch innerhalb einer selbst geschriebenen Funktion abhandeln, die von main() aufgerufen wird.
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.