> > >> >> > So you believe that you can index into an object randomly by pointer > arithmetic and pull out a different field? > > For starters, this is illegal because you don't know where the padding > bytes are. > You cannot assume that X.a + 1 == X.b > "Implementation alignment requirements might cause two adjacent members > not to be allocated immediately after each other;" > > See 9.2.14 >
IE at best you'd have to add &(struct X*(0))->b - &(struct X*(0))->a I don't believe this is legal either. Let me try to dredge up the long discussions we had about these cases on the gcc mailing lists. The conclusion was, i believe: "if you want to go marching through an object as a char *, that's fine, if you expect to be able to get at fields by playing pointer arithmetic games, from other fields, that is not) I feel like every couple years, a different compiler has the same aliasing discussions :)
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits