将函数指针强制转换为long

时间:2016-09-01 09:45:54

标签: java c java-native-interface

我不确定这是否可行,但我需要将一个函数指针强制转换为long,以便将C级代码映射回java代码。

1 个答案:

答案 0 :(得分:2)

指针的值是一个整数,你只需要知道你在做什么,并分配足够的存储空间来存储指针的值。 (在32位操作系统中,指针占用32位存储空间,在64位操作系统中,指针占用64位存储空间)。

一个C示例:

#include <stdio.h>

void fun()
{
    printf("fun\n");
    return;
}

typedef void (*fun_type)();

int main()
{
    long long int a = (long long int)fun;

    fun_type func_point = (fun_type)a;

    func_point();
    return 0;
}