Devo abbinare la firma per la chiamata getnameinfo così posso scrivere un wrapper attorno a quella chiamata. Sfortunatamente la firma cambia tra gli host.le modifiche alla firma di getnameinfo tra le versioni di glibc, come posso abbinarlo?
Le cose stavano lavorando e andando scoperta fino a quando ho provato a compilare sulle ultime CentOS, 6.3, che dà l'errore:
error: conflicting types for 'getnameinfo'
Eh?
Si scopre che l'argomento finale, flags, è elencato come int unsigned su CentOS (glibc-headers-2.12-1.80) ma è solo un int su Fedora (glibc-headers-2.15-58). (Si noti che le pagine man su entrambi gli host dicono che dovrebbe essere un int.)
extern int getnameinfo (/*cut*/, unsigned int __flags);
vs
extern int getnameinfo (/*cut*/, int __flags);
qualche ricerca mi porta a credere che the standard has changed the type dell'argomento bandiere.
Sembra che ho bisogno di cambiare il tipo di flag nella mia funzione per abbinare la definizione dell'host. Qual è il modo migliore per affrontare questo problema? Si tratta di un problema di tipo autoconf o esiste una soluzione più semplice? Speravo che il compilatore (gcc) avrebbe avuto qualche macro che avrei potuto sfruttare ma non riesco a trovare nulla.
Grazie. In realtà è il contrario,> 12 non dovrebbe avere nulla, ma il jist aveva ragione. Come hai scoperto __ GLIBC_MINOR __? –
@PaulRubel Ho letto su di loro da qualche parte in realtà non ricordo :) c'è anche un '__GLIBC__' per la versione principale. – iabdalkader