I've often considered building a gcc variant that deliberately breaks a bunch of the sloppy assumptions people make - like that all pointers are the same size, or that *(foo **)&bar_ptr == (foo *)bar_ptr.... i think you better explain this last one to us peons...