1 extern void link_error(void); 2 3 #define RANGE(name, min, max) \ 4 if (name < min || name > max) \ 5 return; 6 #define ANTI_RANGE(name, min, max) \ 7 if (name >= min && name <= max) \ 8 return; 9 #define MERGE(cond, name1, name2) \ 10 if (cond) \ 11 name1 = name2; 12 #define CHECK_RANGE(expr, min, max) \ 13 do { \ 14 __typeof__ (expr) v = (expr); \ 15 if (v < min) link_error(); \ 16 if (v > max) link_error(); \ 17 if (v < min || v > max) link_error (); \ 18 } while (0) 19 #define CHECK_ANTI_RANGE(expr, min, max) \ 20 do { \ 21 __typeof__ (expr) v = (expr); \ 22 if (v >= min) \ 23 if (v <= max) \ 24 link_error(); \ 25 if (v >= min && v <= max) \ 26 link_error(); \ 27 } while (0) 28