------- Comment #3 from pinskia at gcc dot gnu dot org 2006-06-19 16:54 ------- (In reply to comment #2) > Changing just one line of the test program to the (AFAIK) legal C code. By > casting through void *, we are addressing Andrew's concerns about violating > the > C rules. > > Foo *pFoo = *(Foo **) ((void *)&longPtr); /* // BAD! */
No you are still accessing a long as a "Foo*", the intermediate types does not change a thing. The cast to "void*" is designed to get rid of the warning but does not get rid of the undefinedness of the code. *** This bug has been marked as a duplicate of 21920 *** -- pinskia at gcc dot gnu dot org changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |RESOLVED Resolution| |DUPLICATE http://gcc.gnu.org/bugzilla/show_bug.cgi?id=28073