Илья_2014 (15.08.2014 18:59, просмотров: 1) ответил Красный Свин на Этот вариант работает везде:
Вот ещё: #define CT_ASSERT_EXPR(ex) ( (struct { ct_assert[(ex)?1:-1]; } *) 0?0:0)
#define CT_ASSERT(ex) extern char ct_assert_[CT_ASSERT_EXPR(ex) + 1]
Пример использования (надуманный):
#define abs(a,b) (CT_ASSERT_EXPR(a) + CT_ASSERT_EXPR(b) + ((a) > (b) ? (a) : (b)))