LINUX.ORG.RU

История изменений

Исправление MOPKOBKA, (текущая версия) :

#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>

#define TRY(F, ARGS...) if (!F(ARGS)) {puts("Fail " #F "!!!"); abort();}

bool good() {
        return true;
}

bool bad(int n) {
        return false;
}

int main() {
        TRY(good);
        TRY(good);
        TRY(bad, 1);
        TRY(good);
        return 0;
}
./a.out 
Fail bad!!!
Аварийный останов

Исходная версия MOPKOBKA, :

#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>

#define TRY(F, ARGS...) if (!F(ARGS)) {puts("Fail " #F "!!!"); abort();}

bool good() {
        return true;
}

bool bad(int n) {
        return false;
}

int main() {
        TRY(good);
        TRY(good);
        TRY(bad, 1);
        TRY(good);
        return 0;
}