uintptr_t
并且intptr_t
它们的数字类型足够大以包含指针,我的问题是,当向其强制转换时,它们与其他数字类型有何关系。具体而言,其类型(int
,long
,long long
,short
,char
,size_t
等)不能NUM_TYPE
被定义为,使得下一个功能不会损坏的值n
?
intptr_t cast_num(NUM_TYPE n){return (intptr_t) n;}
可选类型:
intptr_t
范围至少为[-0x7FFF ... 0x7FFF]。
uintptr_t
范围为[0 ...至少0xFFFF]。
根据需要使用INTPTR_MIN, INTPTR_MAX, UINTPTR_MAX
from<stdint.h>
形成条件代码。
intptr_t cast_long(unsigned long n) {
_Static_assert(UIINTPTR_MAX >= ULONG_MAX, "unsigned long too big"):
return (intptr_t) n;
}
注意:指向/来自的对象指针uintptr_t
,intptr_t
应通过进行转换void *
。函数指针可能太大。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句