Correctif pour le déréférencement pointeur puni de type va rompre strict-aliasing

J'essaie de résoudre deux avertissements lors de la compilation d'un programme spécifique à l'aide de GCC. Les avertissements sont:

avertissement: un déréférencement de type punned pointeur de la pause
strict-aliasing règles [-Wstrict-aliasing]

et les deux coupables sont:

unsigned int received_size = ntohl (*((unsigned int*)dcc->incoming_buf));

et

*((unsigned int*)dcc->outgoing_buf) = htonl (dcc->file_confirm_offset);

incoming_buf et outgoing_buf sont définis comme suit:

char                    incoming_buf[LIBIRC_DCC_BUFFER_SIZE];

char                    outgoing_buf[LIBIRC_DCC_BUFFER_SIZE];

Cela semble légèrement différente que les autres exemples de cet avertissement, j'ai été l'examen. Je préfère régler le problème plutôt que de désactiver strict-aliasing contrôles.

Il y a eu beaucoup de suggestions pour utiliser une union de ce qui pourrait être approprié de l'union pour ce cas?

source d'informationauteur BlankFrank