Esta gran aplicación tiene una biblioteca de grupo de memoria que utiliza un identificador interno para almacenar nodos de memoria. El tratamiento se implementa utilizando macros cpp, y se puede encontrar el archivo completo trp.h here. Me sale el siguiente advertencia del compilador cuando intento compilar la aplicación:Descifrando una advertencia del compilador queer sobre la constante decimal sin signo
warning: this decimal constant is unsigned only in ISO C90
Al eliminar porciones del código de macro y el uso de ensayo y error, finalmente encontré al culpable:
#define trp_prio_get(a_type, a_field, a_node) \
(2654435761*(uint32_t)(uintptr_t)(a_node))
I No estoy seguro de lo que ese número extraño está haciendo allí, pero supongo que está allí por una buena razón, así que solo quiero dejarlo en paz. Sin embargo, quiero arreglar la advertencia, ¿alguna idea de por qué el compilador dice que no está firmado solo en ISO C90?
EDIT: estoy usando gcc-4,1
Sería útil decirnos qué compilador está utilizando. – AndrejaKo
La advertencia también está ahí por una razón.Te dice que el tipo del literal ha cambiado de una versión C a otra, por lo que cualquier buena razón que tuviese el desarrollador original podría estar equivocada, lo que podría romper tu código de maneras interesantes. – gnasher729