que tengo código que se ve algo como esto, donde addr es un sockaddr *:puntero eliminación de referencias hace romper estrictas normas anti-aliasing usando sockets Berkeley
struct sockaddr_in *sin = (struct sockaddr_in *) addr;
const char *IP=inet_ntoa(sin -> sin_addr);
Creo que esto es un código muy típica para el uso de Berkeley enchufes
Sin embargo, cuando compilo esto, yo estoy haciendo la siguiente advertencia:
dereferencing pointer 'sin' does break strict anti-aliasing rules
La búsqueda en línea, encuentro alguna discusión sobre el hecho de que la forma en que estoy haciendo las cosas es bastante típico, pero esto la advertencia del compilador también es bastante real y no es algo bueno.
¿Cuál es la forma correcta de volver a hacer este código para corregir la advertencia, y no solo silenciarlo?
sockets no son parte de una implementación del compilador sino que forma parte del sistema operativo. –
Donde el programador tiene "#include", ya sea ese archivo de encabezado algo.h es parte de una implementación C o C++, o bien el programador tiene suerte de que las cosas funcionen tan bien como lo hacen y el programador tiene que resolverlas por sí mismo. –
Eso solo es cierto para #incluir archivos que son parte del idioma, p. stdlib.h. Los archivos de inclusión de socket forman parte de un SDK de sockets, no del compilador. – EJP