goto is evil
-
Original erstellt von Nemesyzz:
Also ich würde es so schreiben:[...]Uih. Die Lösung ist aber schön. Sie läßt sich irgendwie so richtig von oben nach unten lesen und ich raff sie auf anhieb.
perfekt zwar nicht, weil das while da nicht wirklich ausdrückt, wie lange die schleife zu laufen hat, aber das hat eh noch keine der lösungen geschafft, ohne nachher noch nen komplizierten hammer zu präsentieren.
-
Bashar: Huch, entschuligung. Das kommt eben davon, wenn man den halb modifizierten Code im Editorfenster nebenan für den echten hält ...
-
N'Abend!
1. Eine konkrete Aufgabestellung wäre nicht schlecht!
2. Was habt ihr bloß gegen Endlosschleifen, hm?
3. Gibt es gerade in der Softwareprogrammierung keine "richtige" und "falsche" Lösung! TMOO!
-
- alle anderen haben die Aufgabenstellung verstanden
- nix dagegen, aber wenn sie semantisch nicht paßt ...
- doch.
-
Original erstellt von Hexagon:
3. Gibt es gerade in der Softwareprogrammierung keine "richtige" und "falsche" Lösung!Mein Compiler will mich vom Gegenteil überzeugen.
-
Ja, die Sauberkeit von Nemesyzz' Lösung überzeugt.
-
Find ich auch gut. Danke
-
Hier ist mein Vorschlag:
bool bCycle = false; do { rc = slow_syscall(); if ( rc < 0 ) { bCycle = errno == EINTR; if ( bCycle == true ) { bCycle = restart; } else { perror("slow_syscall"); exit(EXIT_FAILURE); } } } while ( bCycle == true );
-
Original erstellt von Finten:
**Hier ist mein Vorschlag:bool bCycle = false; do { rc = slow_syscall(); if ( rc < 0 ) { bCycle = errno == EINTR; if ( bCycle == true ) { bCycle = restart; } else { perror("slow_syscall"); exit(EXIT_FAILURE); } } } while ( bCycle == true );
**
hmm.... also ich würde das noch ein wenig ändern (nur vom "aussehen") :
bool bCycle = false; do { rc = slow_syscall(); if(rc < 0) { //bCycle = errno == EINTR; if(bCycle = errno == EINTR) bCycle = restart; else { perror("slow_syscall"); exit(EXIT_FAILURE); } } } while(bCycle);
-
Mit einer Hilfsvariable wäre das auch noch möglich ohne das if - sieht aber mmn nich so schön aus...
bool cont = true; while(slow_syscall() < 0 && cont) { cont = restart; if(errno != EINTR) { perror("slow_syscall"); exit(EXIT_FAILURE); } }
-
Jo, Nemesyzz' Lösung ist die beste.
-
Ich würd beim goto bleiben.