1 #ifndef TYPECHECK_H_INCLUDED 2 #define TYPECHECK_H_INCLUDED 3 4 /* 5 * Check at compile time that something is of a particular type. 6 * Always evaluates to 1 so you may use it easily in comparisons. 7 */ 8 #define typecheck(type,x) \ 9 ({ type __dummy; \ 10 typeof(x) __dummy2; \ 11 (void)(&__dummy == &__dummy2); \ 12 1; \ 13 }) 14 15 /* 16 * Check at compile time that 'function' is a certain type, or is a pointer 17 * to that type (needs to use typedef for the function type.) 18 */ 19 #define typecheck_fn(type,function) \ 20 ({ typeof(type) __tmp = function; \ 21 (void)__tmp; \ 22 }) 23 24 #endif /* TYPECHECK_H_INCLUDED */ 25