Questa grande applicazione ha una libreria del pool di memoria che utilizza un tracing internamente per memorizzare i nodi della memoria. Il treap viene implementato utilizzando i macro cpp e il file completo trp.h può essere trovato here. Ottengo il seguente avviso del compilatore quando si tenta di compilare l'applicazione:Decifrare un avviso del compilatore queer sulla costante decimale senza segno
warning: this decimal constant is unsigned only in ISO C90
Eliminando porzioni del codice della macro e l'utilizzo di tentativi ed errori, ho finalmente trovato il colpevole:
#define trp_prio_get(a_type, a_field, a_node) \
(2654435761*(uint32_t)(uintptr_t)(a_node))
I Non sono sicuro di quello che sta facendo quel numero strano, ma presumo sia lì per una buona ragione, quindi voglio solo lasciarlo da solo. Voglio però aggiustare l'avvertimento ... un'idea del perché il compilatore dice che è senza segno solo in ISO C90?
EDIT: sto usando gcc-4,1
Sarebbe utile dirci quale compilatore stai usando. – AndrejaKo
L'avviso è anche lì per un motivo.Ti dice che il tipo di letterale è cambiato da una versione C all'altra, quindi qualunque buona ragione lo sviluppatore originale potrebbe ora essere sbagliato, il che potrebbe inficiare il tuo codice in modi interessanti. – gnasher729