goto is evil
-
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.