Le coulage d'un int pointeur vers un char ptr et vice versa

Le problème est simple. Ce que je comprends, GCC soutient que les caractères vont être aligné sur un octet et entiers de 4 octets alignés dans un environnement 32 bits. Je suis également conscient du standard C99 6.3.2.3 qui dit que la conversion entre les mal alignées pointeur-types de résultats non défini opérations. Ce que font les autres normes de C dire à ce sujet? Il y a aussi beaucoup de codeurs expérimentés ici - n'importe quelle vue sur ce sera apprécié.

int *iptr1, *iptr2;
char *cptr1, *cptr2;

iptr1 = (int *) cptr1;
cptr2 = (char *) iptr2;
La conversion de int* en char* fonctionne toujours. À l'inverse, sur certains Processeurs, il fonctionne, sur d'autres il ne l'est pas.
Dans le cas où vous êtes intéressé, à la suite d'examiner un cas particulier: stackoverflow.com/q/25994127/2436175

OriginalL'auteur LearnerForever | 2010-11-27