我试图将void *
类型的值强制转换为uint32
,但是在编译后出现错误:
错误:从指针转换为不同大小的整数
最佳答案
C标准说的是C11 6.3.2.3/6:
任何指针类型都可以转换为整数类型。除先前指定的内容外,
结果是实现定义的。如果结果无法以整数类型表示,
行为是不确定的。结果不必在任何整数的值范围内
类型。
这意味着由编译器来指定在给定系统上将要发生的事情。显然,您的特定编译器无法显示结果,因此会抛出诊断消息。
相反,您应该执行的是强制转换为uintptr_t
。保证此类型足够大以包含对象指针值。
关于c - 在将void *指针变量强制转换为uint32的unsigned int时出现编译时错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50675039/