我必须使用 gcc 在 Linux 上维护一大块源代码,它具有以下函数原型:
int foo(const void*, ...)
我必须将一个整数传递给这个函数。我知道这是一个坏主意,但在这个阶段,我不允许修改源代码。
即我必须调用foo(n)
(n
定义为int n
)
在 64 位机器上,我收到一个错误:
cast to pointer from integer of different size
据我了解,这是因为 32 位机器上的整数大小为 4 个字节,而指向 void 的指针大小为 8 个字节。
我通过首先将大小为 4 字节的整数转换为大小为 8 字节的 long 来解决编译错误。所以我做了foo((long)n)
我想知道这是否是处理这个问题的一种可接受的方式,还是有其他建议?