¿Cómo puedo hacer esto:C, sockets de dominio Unix, datos auxiliares y GCC; Usando CMSG_DATA macro
*(int *)CMSG_DATA(hdr) = fd2pass;
Sin GCC plantear esta:
error: dereferencing type-punned pointer will break strict-aliasing rules
De una manera compatible con las siguientes opciones:
-Wall -Werror -pedantic
Gracias, Gonzalo. No quise remediarlo en el Makefile, ya que solo estoy agregando una característica a una biblioteca existente, pero ahora que lo estoy considerando, no parece un problema. –
Ha. Fácil. Solo necesito superar mi miedo a los Makefiles. –
Desactivar las características para evitar las advertencias del compilador generalmente es una mala idea. Es mejor entender la advertencia y modificar su código. Cuando simplemente abres -fno-strict-aliasing en tu línea de compilación, estás diciendo que el compilador está equivocado. En general, es una buena idea asumir que su código es el problema. Dicho esto, cada ejemplo de código para pasar descriptores de archivos a través de sockets de dominio que he visto fue escrito usando el esquema de desreferenciación en la pregunta original. GCC acaba de comenzar a advertir sobre esto recientemente. – petrsnd