Во-первых, это не обман:
Безопасно ли приводить int к пустому указателю и снова возвращаться к int?
Разница в вопросах заключается в следующем: я использую только void * для хранения int, но я никогда не использую его как void *.
Таким образом, вопрос действительно сводится к этому:
Является ли пустота * такой же шириной, как int
Я не могу использовать intptr_t, потому что я использую c89 / ANSI C.
EDIT
В stdint.h из C99 (версия gcc) я вижу следующее:
/* Types for `void *' pointers. */
#if __WORDSIZE == 64
# ifndef __intptr_t_defined
typedef long int intptr_t;
# define __intptr_t_defined
# endif
typedef unsigned long int uintptr_t;
#else
# ifndef __intptr_t_defined
typedef int intptr_t;
# define __intptr_t_defined
# endif
typedef unsigned int uintptr_t;
#endif
Могу ли я просто сделать что-то похожее на Джерри и ожидать, что это сработает? Казалось бы, приведение должно работать, поскольку все intptr_t является typedef для целочисленного типа ...