我正在尝试将void *
类型的值类型转换为uint32
但在编译后收到错误:
错误:从指针强制转换为不同大小的整数
答案 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
。保证此类型足够大以包含对象指针值。