> Can anyone help me, explain the above code typecheck. How does > (void)(&__dummy == &__dummy2) evaluates to 1 Its not this comparison getting evaluated to 1, but last expression "1; \" which is forcibly returning 1 in every case. Since it is just compile time warning and should not effect the program execution, this macro is always returning 1 at run time. To me it just valuable for coding style where you do some action only if type matches, but in real sense you take action anyways. Rajat On Mon, Jan 31, 2011 at 10:33 PM, 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 > > I appreciate any explain. > > -- > Regards, > Sri. > > _______________________________________________ > Kernelnewbies mailing list > Kernelnewbies@xxxxxxxxxxxxxxxxx > http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies > _______________________________________________ Kernelnewbies mailing list Kernelnewbies@xxxxxxxxxxxxxxxxx http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies