我正在尝试使现有代码适应 64 位机器。主要问题是在一个函数中,前面的编码器使用了一个 void* 参数,该参数在函数本身中被转换为合适的类型。一个简短的例子:
void function(MESSAGE_ID id, void* param)
{
if(id == FOO) {
int real_param = (int)param;
// ...
}
}
当然,在 64 位机器上,我得到了错误:
error: cast from 'void*' to 'int' loses precision
我想更正此问题,以便它仍然可以在 32 位机器上运行,并且尽可能干净。任何想法 ?
原文由 PierreBdR 发布,翻译遵循 CC BY-SA 4.0 许可协议
使用
intptr_t
和uintptr_t
。为了确保它以可移植的方式定义,您可以使用如下代码:
只需将其放在某个 .h 文件中并包含在您需要的任何地方。
或者,您可以从 此处 使用便携式文件。