gpt4 book ai didi

c 如何使用函数名评估函数指针

转载 作者:太空宇宙 更新时间:2023-11-04 07:00:23 25 4
gpt4 key购买 nike

这是我的代码片段:

typedef void (*FUNCPT)(void);

void func1();

int main(){
FUNCPT fpt1;
char *s = "func1";

return 0;
}

我可以这样评估 fpt1 :

fpt1 = func1;

但是出于某种原因我必须使用函数名来评估函数指针,我希望通过这样的方式获得相同的值:

fpt1 = (FUNCPT)s;

我怎样才能做到这一点?

最佳答案

将函数名称计算为函数指针的唯一方法(不引用固定的符号表与您自己的代码中的名称)是使用共享库和 dlopen()dlsym() 和 Linux/Unix 世界中的类似函数以及 Windows 世界中的相应等价物。

  1. 将你要解析的函数放到一个共享库中
  2. 使用 dlopen 从您的程序中打开该共享库
  3. 使用 dlsym 按名称查找符号
  4. 将返回的地址转换为适当的函数指针并调用它

然而,这与其说是 C 问题,不如说是操作系统问题。如果不说明您的平台,就无法提供进一步的帮助。

关于c 如何使用函数名评估函数指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39436479/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com