Hi Sri, On Mon, Jan 31, 2011 at 9:03 AM, Sri Ram Vemulpali <sri.ram.gmu06@gmail.com> wrote:
Hi all,
/* * Check at compile time that something is of a particular type. * Always evaluates to 1 so you may use it easily in comparisons. */ #define typecheck(type,x) \ ({ type __dummy; \ typeof(x) __dummy2; \ (void)(&__dummy == &__dummy2); \ 1; \ })
#define typecheck_fn(type,function) \ ({ typeof(type) __tmp = function; \ (void)__tmp; \ })
Can anyone help me, explain the above code typecheck. How does (void)(&__dummy == &__dummy2) evaluates to 1
I appreciate any explain.
If dummy and dummy2 are of different types, then when you try and do a pointer comparison (&dummy == &dummy2) it will produce a compiler warning/error. The actual comparison will always fail, but it doesn't matter since the results aren't used. typecheck always returns 1. Dave Hylands