相关疑难解决方法(0)

将指针转换为整数

我正在尝试将现有代码调整为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位机器上运行并且尽可能干净.任何的想法 ?

c++ 64-bit gcc casting 32-bit

77
推荐指数
5
解决办法
15万
查看次数

如何从void*转换回int

如果我有

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)

c

16
推荐指数
2
解决办法
5万
查看次数

标签 统计

32-bit ×1

64-bit ×1

c ×1

c++ ×1

casting ×1

gcc ×1