gpt4 book ai didi

c - 覆盖函数指针引发错误 : non-object type is not assignable

转载 作者:太空宇宙 更新时间:2023-11-04 08:03:08 24 4
gpt4 key购买 nike

我目前正在开发一个猴子补丁 c 函数调用的演示,想法是你有一个共享的 c 文件(例如:lib.c),它有一个名为 void foo() 的导出函数。在头文件中 lib.h .

目前我正在尝试执行以下操作:

#include <stdio.h>
#include "lib.h"

void (*foo_original)() = NULL;
void foo_patch()
{
puts("Before foo!");
(*foo_original)();
puts("Before foo!");
}

int main()
{
foo_original = &foo;
foo = &foo_patch;

// Somewhere else in the code
foo();
}

但是这给了我以下错误:

error: non-object type 'void ()' is not assignable

有谁知道我该如何解决这个问题?谢谢

最佳答案

这一行:

foo = &foo_patch;

不是重新分配函数指针,而是尝试重新分配函数 foo 本身的地址,这是不允许的,因为那是 r-value .

如果您要将指针 foo_original 重新分配为指向 foo_patch,您将得到一个无限递归循环,因为 foo_patch 调用foo_original 指向的函数。

关于c - 覆盖函数指针引发错误 : non-object type is not assignable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44618937/

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