我试图将代码从32b移植到64位,并且我被困在这一个错误中。移植32位到64位printf相关错误
printf ("STUFF 0x%x ",(u_int32_t)val)
在移植我得到一个错误说%×预计unsigned int类型和参数2的参数的类型是“长unsigned int类型”。因此,采取这种错误顾及我做出%x到%LX
变化 printf ("STUFF 0x%lx ",(u_int32_t)val)
格式%×期望类型的参数长unsigned int类型和参数2为unsigned int型的。这真是令人困惑。
现在我做这样的事情,它的工作原理。
printf ("STUFF 0x%x ",(u_int32_t)(size_t)val)
我不知道为什么这也解决了这个问题。现在确定什么是解决这个错误的正确方法。
在此处添加一个问题。
所以你有一个结构st;
st *a = NULL;
u_int32_t = B
a = (st *)B;
我在这里得到一个错误,说“从不同大小的整数转换为指针”。我通过做类似
a = (st *)(size_t)B;
这是正确的做法吗?
什么类型是'val' *真* *? –
它实际上的结构对象.. STRUCT一个{} 空隙MYFUNC(A * VAL){ 的printf( “0X STUFF%LX”,(u_int32_t)VAL) } //像这样 – Rags