首页 > 解决方案 > 尽管变量类型相同,但 gcc 抛出 -Wint-to-pointer-cast(从 multiboot_uint64_t 到 multiboot_uint64_t*)

问题描述

这是触发警告的代码(public_mbd是 a struct multiboot_info):

multiboot_uint64_t* fadr;
fadr=(multiboot_uint64_t*)public_mbd->framebuffer_addr;

和结构的定义framebuffer_addr如下:

struct multiboot_info{
...
multiboot_uint64_t framebuffer_addr;
...
} 

gcc 说:

warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]

我对此感到非常困惑。不是fadrmultiboot_uint64_t*?它们的大小相同!

标签: cgcc-warning

解决方案


这不是faddr问题所在。问题是演员阵容。

从类型很明显multiboot_uint64_t framebuffer_addr是64位。从警告中我们可以猜到您的构建指针是 32 位的。所以警告告诉你你正在将 64 位int转换为 32 位指针。


推荐阅读