Puis-je prendre un intptr_t
et l'assigner ou le copier dans un uintptr_t
et ensuite le récupérer avec la même valeur garantie ?
C'est-à-dire, est-ce que l'une des deux options suivantes est garantie de fonctionner (pas d'assertion) :
En utilisant l'assignation :
intptr_t i1 = f();
uintptr_t u = i1;
intptr_t i2 = u;
assert(i1 == i2);
En utilisant memcpy
:
intptr_t i1 = f();
uintptr_t u;
memcpy(&u, &i1, sizeof(u));
memcpy(&i2, &u, sizeof(u));
assert(i1 == i2);
Si ce n'est pas garanti par la norme, il est possible de vérifier une condition à la compilation ou à l'exécution pour déterminer si c'est garanti sur une plateforme particulière.