Overwriting function pointer raises error: non-object type is not assignable
Overwriting function pointer raises error: non-object type is not assignable
我目前正在开发一个猴子补丁 c 函数调用的演示,想法是你有一个共享的 c 文件(例如:lib.c
),它有一个名为 [=13= 的导出函数] 在头文件中 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
调用了 [=12] 指向的函数=].
我目前正在开发一个猴子补丁 c 函数调用的演示,想法是你有一个共享的 c 文件(例如:lib.c
),它有一个名为 [=13= 的导出函数] 在头文件中 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
调用了 [=12] 指向的函数=].