gpt4 book ai didi

c - 为什么将 short 转换为 void * 会收到警告,而从 int 就可以了?

转载 作者:太空宇宙 更新时间:2023-11-04 01:15:03 28 4
gpt4 key购买 nike

见我正在使用 glib,而 gpointer 是 void * 的类型定义。 (我猜 glib 做这种类型是为了让事情更清楚)。

当我进行信号连接时,我必须将数据作为空指针 (void *) 传递。

所以代码是(像这样):

...
g_signal_connect (object, function, (gpointer) data);
...

如果我使用 short 作为数据类型,我会收到这样的 gcc 警告消息:

warning: cast to pointer from integer of different size

如果我使用 int 作为数据类型,我不会收到任何警告。

但在这两种情况下,一切正常,那么,为什么我使用 short 时会收到此警告?

最佳答案

在 32 位架构上,指针是 32 位。 int 通常 也是 32 位 - 因此转换是“1 到 1”。 short 通常是 2 个字节,因此将 short 转换为指针通常不是一件非常安全的事情 - 这就是编译器警告您的原因。

关于c - 为什么将 short 转换为 void * 会收到警告,而从 int 就可以了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3510951/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com