Во-первых, не используйте макросы для подобных вещей - используйте функции (возможно, встроенные).
Во-вторых, если вы должны использовать макросы, то что не так с, например,
#define BETWEEN(x, x_min, x_max) ((x) > (x_min) && (x) < (x_max))
Согласно вашему последующему редактированию, если вы не знаете порядок x_min
и x_max
, тогда вы можете сделать это:
#define BETWEEN2(x, x0, x1) (BETWEEN((x), (x0), (x1)) || \
BETWEEN((x), (x1), (x0)))
Применяются обычные предостережения о макросах, побочных эффектах и т. Д.
Редактировать: убрал пробел между макросом и аргументами для компиляции