Casts to "void *" are not permitted in integer constant expressions.
Therefore this code violates constraint 6.7.5.2p2 of C99 (C90 is u.b.) and so must be diagnosed. extern int c[1 + ((int) (void *) 0)]; -- Summary: C99 failure to diagnose non-integer cast Product: gcc Version: 4.1.2 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: neil at gcc dot gnu dot org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31871