code example of macro which returns a value.

#include <stdio.h>

#define check(condition)                   \
    ({                                     \
        int __ret = 0;                     \
        if (!(condition))                  \
        {                                  \
            printf("Condition failed!\n"); \
            __ret = -1;                    \
        }                                  \
        __ret;                             \
    })

int main()
{
    int x = 10;
    int result = check(x > 15);

    printf("result: %d", result);
    return 0;
}