un déréférencement de type punned pointeur de la pause-strict-aliasing règles

J'ai un unsigned char pointeur qui contient une structure.Maintenant, je veux faire ce qui suit

unsigned char buffer[24];

//code to fill the buffer with the relevant information.

int len = ntohs((record_t*)buffer->len);

où record_t structure contient un champ appelé len.Je ne suis pas en mesure de le faire et j'obtiens l'erreur.

error: request for member len in something not a structure or union.

Ensuite, j'ai essayé:

int len = ntohs(((record_t*)buffer)->len);

de façon à obtenir la priorité de l'opérateur droite. Qui m'a donné le warning:
dereferencing type-punned pointer will break strict-aliasing rules
.

puis j'ai déclaré

record_t *rec = null;

rec = (record_t*)

ce que je fais mal?

Quelles sont vos options de compilateur? Aussi, se concentrer sur le problème à portée de main, et ne nous renseignent pas sur les précédentes erreurs de syntaxe que vous rencontrez.
En C, c'est NULL, pas null.
Double Possible de Quelle est la stricte aliasing règle?

OriginalL'auteur liv2hak | 2011-10-03