Come posso fare questo:C, socket di dominio Unix, dati ausiliari e GCC; Utilizzando CMSG_DATA macro
*(int *)CMSG_DATA(hdr) = fd2pass;
Senza GCC sollevare questo:
error: dereferencing type-punned pointer will break strict-aliasing rules
in modo compatibile con le seguenti opzioni:
-Wall -Werror -pedantic
Grazie, Gonzalo. Non volevo porvi rimedio nel Makefile, dato che sto solo aggiungendo una funzionalità a una libreria esistente, ma ora che ci sto pensando, non sembra un problema. –
Ha. Facile. Ho solo bisogno di superare la mia paura dei Makefile. –
Disabilitare le funzionalità per aggirare gli avvertimenti del compilatore è generalmente una cattiva idea. È meglio comprendere l'avviso e modificare il codice. Quando esegui lo slap -fno-strict-aliasing sulla tua riga di compilazione stai dicendo che il compilatore è sbagliato. In generale, è una buona idea presumere che il tuo codice sia il problema. Detto questo, ogni esempio di codice per il passaggio di descrittori di file tramite socket di dominio che abbia mai visto è stato scritto utilizzando lo schema di dereferenziamento nella domanda originale. GCC ha appena iniziato a parlarne di recente. – petrsnd