Это большое приложение имеет библиотеку пула памяти, которая использует внутреннюю память для хранения узлов памяти.Треап реализован с использованием макросов cpp, а полный файл trp.h можно найти здесь .При попытке скомпилировать приложение я получаю следующее предупреждение компилятора:
warning: this decimal constant is unsigned only in ISO C90
Удалив части кода макроса и используя метод проб и ошибок, я наконец нашел виновника:
#define trp_prio_get(a_type, a_field, a_node) \
(2654435761*(uint32_t)(uintptr_t)(a_node))
Я не уверен, что этот странный номер делает там, но я полагаю, что он там есть по уважительной причине, поэтому я просто хочу оставить его в покое.Я действительно хочу исправить предупреждение - есть ли идея, почему компилятор говорит, что он не подписан только в ISO C90?
EDIT: Я использую gcc-4.1