たくさんのスタイルやコードのブロックで複数の関数の戻り値のチェックを回避するために、どのように私はこのようなブロックを持っている:私のコードでは倍の
close(READ);
dup(fd[READ]);
close(fd[READ]);
execl("ay", "bee", NULL);
は、どのように私はの束を回避することができ
if (close(READ) == -1) {
perror("close");
exit(EXIT_FAILURE);
}
...repeat for each function...
またはこれに対処するための良い習慣は何ですか?
私はこのような何か試してみました:
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");
をしかし、私は、これはそれについて移動する良い方法はないと思います。これには良い解決策はありますか?
通常、エラーが発生した場合すぐに終了するのではなく、現在の機能からエラーコードを返します。いずれの場合でも、 'if'を避けることはできません(マクロを除いて、これは本当に醜いことがあります)。 –