Могу ли я взять intptr_t
и присвоить или memcpy его для uintptr_t
и обратно и гарантировать, что получим одно и то же значение?
То есть гарантируется одно из следующих действий: работа (без подтверждения):
Использование задания:
intptr_t i1 = f();
uintptr_t u = i1;
intptr_t i2 = u;
assert(i1 == i2);
Использование memcpy
:
intptr_t i1 = f();
uintptr_t u;
memcpy(&u, &i1, sizeof(u));
memcpy(&i2, &u, sizeof(u));
assert(i1 == i2);
Если это не гарантируется стандартом, можно проверить условие во время компиляции или выполнения, чтобы определить, гарантировано ли оно на конкретной платформе.