我想打印void指针的地址
u32 j;
for (j = 0; j < sizeof(struct queue_header); j += 4)
{
printf("0x%x ",(u32 *)((u32 *)q->q_hdr + j)); //q_hdr is a void pointer
}
但该类型转换错误:
你可以告诉我如何打印地址。警告:从指针强制转换为不同大小的整数[-Wpointer-to-int-cast]
答案 0 :(得分:8)
这就是%p
的用途:打印指针。
printf("%p ", (void *)((u32 *)q->q_hdr + j));
应该做你想做的事。
答案 1 :(得分:0)
您的代码是否在64位平台(Intel Core 2 Duo,i7)上运行?
也许&#34;%lx&#34;适用于printf。
您还需要将printf的参数转换为64位整数。