将void *指针变量强制转换为unsigned int到uint32时,会出现编译时错误

时间:2018-06-04 07:07:16

标签: c pointers casting

我正在尝试将void *类型的值类型转换为uint32但在编译后收到错误:

  

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

1 个答案:

答案 0 :(得分:1)

C标准所说的是,C11 6.3.2.3/6:

  

任何指针类型都可以转换为整数类型。除非事先指明,否则   结果是实现定义的。如果结果无法以整数类型表示,   行为未定义。结果不必在任何整数的值范围内   类型。

这意味着编译器需要指定给定系统上会发生什么。显然是您的特定编译器,无法表示结果,因此会抛出诊断消息。

你应该做的是投射到$ ps ax -eo pid,args --forest 942 cron 18743 \_ CRON 18745 \_ /bin/sh -c test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily ) 18746 \_ run-parts --report /etc/cron.daily 18960 \_ /bin/sh /etc/cron.daily/logrotate 18965 \_ /usr/sbin/logrotate /etc/logrotate.conf 。保证此类型足够大以包含对象指针值。