c - 尽管变量类型相同,但 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]
我对此感到非常困惑。不是fadr
吗multiboot_uint64_t*
?它们的大小相同!
解决方案
这不是faddr
问题所在。问题是演员阵容。
从类型很明显multiboot_uint64_t framebuffer_addr
是64位。从警告中我们可以猜到您的构建指针是 32 位的。所以警告告诉你你正在将 64 位int
转换为 32 位指针。
推荐阅读
- javafx - 如何在 JavaFX 中的多个地方使用相同的组件?
- rust - 为什么我的 FFI 函数的第二次调用无法匹配字符串比较?
- firebase - Firestore 描述语言
- tensorflow - 2 个 IndexedSlices 不支持高效的 allreduce
- node.js - 我无法从 Watson Discovery 收到任何答复
- javascript - 有没有办法将 CSS 类应用于 Openlayers 5.3 功能?
- ios - 我可以将斜体和/或粗体文本上传到我的 firebase 数据库吗?
- google-apps-script - 在函数中实现 vlookup 和 match
- boto3 - 无法等待 AWS RDS 数据库重命名操作完成 (WaiterError)
- apache - 尝试使用 apache 优雅重启安装新的 SSL 证书返回 [OK],但网站保持关闭