Преобразование указателя в целое число

Я пытаюсь адаптировать существующий код для 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-битной машине и как можно более чисто. Любая идея ?

Ответы на вопрос(10)

Ваш ответ на вопрос