相关疑难解决方法(0)

c89:将int转换为void*并返回

首先,这不是一个骗局:

将int转换为void指针并再次返回int是否安全?

问题的不同之处在于:我只使用void*来存储int,但我实际上从未将它用作void*.

所以这个问题真的归结为:

void*保证至少与int一样宽

我不能使用intptr_t,因为我使用的是c89/ANSI C.

编辑

在C99(gcc版本)的stdint.h中,我看到以下内容:

/* 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
Run Code Online (Sandbox Code Playgroud)

我可能只是偷偷摸摸地装上类似的东西并期望它能起作用吗?似乎转换应该工作,因为所有intptr_t都是整数类型的typedef ...

c c89

8
推荐指数
1
解决办法
3083
查看次数

6
推荐指数
2
解决办法
3644
查看次数

标签 统计

c ×2

c++ ×1

c89 ×1

pointers ×1