我試圖將代碼從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