繁体   English   中英

从不同大小的整数转换为指针(将int作为const void *参数传递)

[英]Cast to pointer from integer of different size (passing int as a const void * parameter)

我必须使用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)

我想知道这是否是解决此问题的可接受方法,或者还有其他建议吗?

您可以使用intptr_t ,但是它是可选的,可能在stdint.h不可用:

intptr_t n = 1;
foo((void*)n);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM