Viele Male in meinem Code zu vermeiden Ich habe Blöcke wie folgt aus:Wie stylen oder mehrere Funktionsrückgabe Kontrollen in einem Codeblock
close(READ);
dup(fd[READ]);
close(fd[READ]);
execl("ay", "bee", NULL);
Wie kann ich vermeiden, dass ein Bündel von
if (close(READ) == -1) {
perror("close");
exit(EXIT_FAILURE);
}
...repeat for each function...
Oder was ist eine gute Praxis, um damit umzugehen?
Ich habe versucht, so etwas wie diese:
void test_returns(int result, char * err) {
if (result == -1) {
perror(err);
exit(EXIT_FAILURE);
}
}
/* code */
test_returns(close(READ), "close");
test_returns(dup(fd[READ]), "dup");
test_returns(close(fd[READ]), "close");
test_returns(execl("ay", "bee", NULL), "execl");
Aber ich denke, das ist kein guter Weg ist, darüber zu gehen. Was ist eine gute Lösung dafür?
Normalerweise möchten Sie nicht sofort beenden, wenn ein Fehler auftritt, sondern nur einen Fehlercode von der aktuellen Funktion zurückgeben. In jedem Fall können Sie die 'if's nicht vermeiden (außer mit Makros, aber das könnte wirklich hässlich werden). –