Мне нужно представлять указатели в виде строк для пользователя. Иногда значения могут быть сохранены в файл и перенесены на компьютер с другой архитектурой (в настоящее время основной проблемой является 32-битная или 64-битная) и загружены из сравниваемого текстового файла - я собираюсь сравнить только загруженные значения с друг друга , но я бы все же предпочел сравнивать числа, чем строки.
Я сейчас использую:
SomeClass* p;
...
printf("%ld", (uintptr_t)p);
но мне интересно, переносимо ли это (хотя на данном этапе важны только Windows и Linux) и не сломается ли это, когда появятся 128-битные системы?
Редактировать : если я не решу использовать uint64_t и не решу, что 64-битная версия - это крыша, это невозможно сделать, потому что какой-то 64-битный указатель может быть вне 32-битного целочисленного диапазона. Поэтому я решил, что сравнивать строки будет безопаснее, даже если он медленнее.