gpt4 book ai didi

c - 设置函数指针 C

转载 作者:太空宇宙 更新时间:2023-11-04 01:05:17 26 4
gpt4 key购买 nike

我有一个简单的问题:假设我有一个名为 _foo 的函数。

void _foo (void *, void *, int);

现在,我想创建一个新的 struct,它包含指向 _foo 的指针,所以:

struct _st {
struct _st *next;
void (*action)(void *, void *, int);
};

然后我初始化一个 struct _st 变量:

struct _st test = {0x0, _foo};

我的问题是:有没有一种方法可以在不使用函数名称的情况下设置 test.action?我的意思是,固定地址或类似地址?

最佳答案

test.action 是一个指针,您可以将其设置为您想要的任何地址(数字地址,例如 0x2000),_foo 也是一个地址的符号名称。然而,要做到这一点,您需要牢记以下几点:

  • 您应该正确地对其进行类型转换以抑制编译器警告/错误。

  • 请注意您可能通过访问一些您无法访问的地址而调用的未定义行为,包括可怕的 SEGFAULT 运行时错误。

  • 对此类赋值使用符号名称/常量总是明智的,这有助于您将来理解自己的代码,例如为什么赋值、如何轻松修改等。

    <

关于c - 设置函数指针 C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24858715/

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