我试图将void *类型的值强制转换为uint32,但是在编译后出现错误:


  错误:从指针转换为不同大小的整数

最佳答案

C标准说的是C11 6.3.2.3/6:


  任何指针类型都可以转换为整数类型。除先前指定的内容外,
  结果是实现定义的。如果结果无法以整数类型表示,
  行为是不确定的。结果不必在任何整数的值范围内
  类型。


这意味着由编译器来指定在给定系统上将要发生的事情。显然,您的特定编译器无法显示结果,因此会抛出诊断消息。

相反,您应该执行的是强制转换为uintptr_t。保证此类型足够大以包含对象指针值。

关于c - 在将void *指针变量强制转换为uint32的unsigned int时出现编译时错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50675039/

10-11 22:23
查看更多