typecheck.h (782B)
1/* SPDX-License-Identifier: GPL-2.0 */ 2#ifndef TYPECHECK_H_INCLUDED 3#define TYPECHECK_H_INCLUDED 4 5/* 6 * Check at compile time that something is of a particular type. 7 * Always evaluates to 1 so you may use it easily in comparisons. 8 */ 9#define typecheck(type,x) \ 10({ type __dummy; \ 11 typeof(x) __dummy2; \ 12 (void)(&__dummy == &__dummy2); \ 13 1; \ 14}) 15 16/* 17 * Check at compile time that 'function' is a certain type, or is a pointer 18 * to that type (needs to use typedef for the function type.) 19 */ 20#define typecheck_fn(type,function) \ 21({ typeof(type) __tmp = function; \ 22 (void)__tmp; \ 23}) 24 25/* 26 * Check at compile time that something is a pointer type. 27 */ 28#define typecheck_pointer(x) \ 29({ typeof(x) __dummy; \ 30 (void)sizeof(*__dummy); \ 31 1; \ 32}) 33 34#endif /* TYPECHECK_H_INCLUDED */