Я столкнулся с подобной проблемой. Я решил это следующим образом:
#ifdef 64BIT
typedef uint64_t tulong;
#else
typedef uint32_t tulong;
#endif
void * ptr = NULL; //Whatever you want to keep it.
int i;
i = (int)(tulong)ptr;
Я думаю, проблема заключается в том, чтобы указывать тип на более короткий тип данных. Но для более крупного типа до int
он отлично работает.
Я преобразовал эту проблему с типизирования указателя на long
до типирования 64-разрядного целого числа в 32-разрядное целое число, и оно работало нормально. Я все еще в поиске опции компилятора в GCC / Clang.