【发布时间】:2012-03-18 13:34:38
【问题描述】:
使用intptr_t 作为通用存储(保存指针和整数值)而不是void* 是个好主意吗? (如此处所示:http://www.crystalspace3d.org/docs/online/manual/Api1_005f0-64_002dBit-Portability-Changes.html)
对于我已经阅读的内容:
-
int->void*->int往返不保证保持原值;我猜int->intptr_t->int会做 -
void*和intptr_t上的指针算术都需要强制转换,所以这里没有任何优势 -
void*表示在存储指针时较少显式转换,intptr_t表示在存储整数值时较少转换 -
intptr_t需要 C99
我还应该考虑什么?
【问题讨论】:
-
没有。 (如果是,那么他们只会将 intptr_t 的语义添加到
void*) -
帖子要求“(保存指针和整数值)”,但随后只讨论了
int、void *和intptr_t。由于uintmax_t、size_t、long long等也是整数类型,听起来问题只是关于对象指针、intptr_t和int类型。
标签: c pointers 32bit-64bit void-pointers intptr