我正在尝试将现有代码调整为64位机器.主要问题是在一个函数中,前一个编码器使用void*参数,该参数在函数本身中转换为合适的类型.一个简短的例子:
void function(MESSAGE_ID id, void* param)
{
if(id == FOO) {
int real_param = (int)param;
// ...
}
}
Run Code Online (Sandbox Code Playgroud)
当然,在64位机器上,我收到错误:
error: cast from 'void*' to 'int' loses precision
Run Code Online (Sandbox Code Playgroud)
我想纠正这个问题,以便它仍然可以在32位机器上运行并且尽可能干净.任何的想法 ?
如果我有
int a= 5;
long b= 10;
int count0 = 2;
void ** args0;
args0 = (void **)malloc(count0 * sizeof(void *));
args0[0] = (void *)&a;
args0[1] = (void *)&b;
Run Code Online (Sandbox Code Playgroud)
如何从args [0]和args0 [1]转换回int和long?例如
int c=(something im missing)args0[0]
long d=(something im missing)args1[0]
Run Code Online (Sandbox Code Playgroud)