Мне было интересно, есть ли лучший способ справиться с ситуацией в C, когда вы хотите выйти из функции, как только вы столкнетесь с ошибкой в серии выражений. (в данном случае это функция, которая при ошибке возвращает NULL)
например в каком-то коде C, где они пытались сократить обработку ошибок, объединив серию операторов с AND (&&).
return doSomething() &&
doSomething2() &&
doSomething3() && ... ;
Это меня раздражает, так как мы забиваем так много на одной строке в одном выражении. Но я думаю, что альтернатива
if (!(value = doSomething()))
return NULL;
if (!(value = doSomething2()))
return NULL;
etc
return value;
Но как насчет оценки ошибок короткого замыкания, которые я видел в сценариях perl и bash ..
int die(int retvalue) {
exit(retvalue);
}
.....
(value = doSomething()) || die(1);
(value = doSomething2()) || die(2);
(value = doSomething3()) || die(3);
return value;
Основная проблема заключается в том, что RHS должен быть выражением, поэтому вы не можете перейти или вернуться из функции. Кто-нибудь сочтет это ценным, или оно слишком ограничено?
edit: Думаю, мне следовало включить новые строки в первый пример. Проблема в том, что вам нужно быть осторожным, если вы решите добавить еще одно выражение посередине.