GCC accepts various conversions between pointers and ints and different types of pointers by default, issuing a warning.
I've been reading the (hopefully) relevant partso f the C99 standard, and it seems to me that C implementations are actually required to diagnose errors in these cases because they are constraint violations: the types are not compatible. Is this interpretation correct? Sorry if this questions this is more appropriate for the gcc-help list. Thanks, Florian