Сразу извиняюсь за глупые вопросы: я не программист, просто надо написать маленькую программу для себя.
Проблема такая. В процессе движения по коду постоянно открываются новые файлы и прочее, что нуждается в «закрытии». При этом постоянно нужно отслеживать ошибки. В итоге получается код типа такого:
...
if (!(f = fopen(...))) {
    return 1;
}
...
if (!(g = log_open(...))) {
    fclose(f);
    return 1;
}
...
if (!(h = door_open(...))) {
    log_close(g);
    fclose(f);
    return 1;
}
...
...
...
if (!(z = mind_open(...))) {
    ...
    door_close(h);
    log_close(g);
    fclose(f);
    return 1;
Как нормальные программисты это организуют? Не предлагать писать не на Си, пожалуйста.


