![](/img/trans.png)
[英]cast from pointer to integer of different size [-Wpointer-to-int-cast]
[英]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.