Thanks for all explanation. It really helped to understand. Sri On Mon, Jan 31, 2011 at 1:03 PM, Manish Katiyar <mkatiyar@xxxxxxxxx> wrote: > On Mon, Jan 31, 2011 at 9:03 AM, Sri Ram Vemulpali > <sri.ram.gmu06@xxxxxxxxx> 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 > > Infact I think it will never return 1, since the addresses of __dummy1 > and __dummy2 have to be different (off by 4 or 8). As pointed out it > is the next line that always returns 1. The purpose of this line is to > throw away warnings like "Incompatible pointer comparison" or > something like that (haven't tried :-)) incase there is a mismatch. > > -- > Thanks - > Manish > -- Regards, Sri. _______________________________________________ Kernelnewbies mailing list Kernelnewbies@xxxxxxxxxxxxxxxxx http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies