C语言中的泛型函数指针

C语言中的泛型函数指针,c,C,我正在编写一个通用测试函数,它将接受从映射文件读取的函数地址,并将参数作为逗号分隔的数据作为套接字中的参数 我能够为已知的函数指针实现它 像 使用上述方法,我将在代码库中为所有类型的函数实现编写函数指针。有什么通用的方法可以做到这一点吗?没有,因为编译器需要知道如何表示参数。对于排除信息的函数指针类型,它无法知道这一点,因此无法生成调用 具有少量参数的函数可能会在CPU寄存器中传递这些参数,例如,当调用许多参数时会溢出到堆栈中 您可以使用varargs来解决这个问题,这样做实际上会锁定参数的传递

我正在编写一个通用测试函数,它将接受从映射文件读取的函数地址,并将参数作为逗号分隔的数据作为套接字中的参数

我能够为已知的函数指针实现它


使用上述方法,我将在代码库中为所有类型的函数实现编写函数指针。有什么通用的方法可以做到这一点吗?

没有,因为编译器需要知道如何表示参数。对于排除信息的函数指针类型,它无法知道这一点,因此无法生成调用

具有少量参数的函数可能会在CPU寄存器中传递这些参数,例如,当调用许多参数时会溢出到堆栈中


您可以使用varargs来解决这个问题,这样做实际上会锁定参数的传递方式。当然,它强制被调用函数处理varargs,这不是很方便。

否,因为编译器需要知道如何表示参数。对于排除信息的函数指针类型,它无法知道这一点,因此无法生成调用

具有少量参数的函数可能会在CPU寄存器中传递这些参数,例如,当调用许多参数时会溢出到堆栈中


您可以使用varargs来解决这个问题,这样做实际上会锁定参数的传递方式。当然,它强制被调用的函数处理varargs,这不是很方便

fn_t fncptr;
fncptr= MapAddress + 0x(offset);
MapAddress是将文件映射到内存地址的位置。您可以在之前提交到DWORD,如果C++编译器无法添加偏移到空偏移,则文件中的函数代码在哪里。但请记住,在windows中,指针的执行地址必须是PAGE_exetuce_READWRITE。那就这样说吧

fncptr(arg1, arg2, arg3);
如果编译器在第一个代码中失败,请执行以下操作: fn_t fncptr;
fncptr=fn_tDWORDMapAddress+0xoffset

您可以执行以下操作

fn_t fncptr;
fncptr= MapAddress + 0x(offset);
MapAddress是将文件映射到内存地址的位置。您可以在之前提交到DWORD,如果C++编译器无法添加偏移到空偏移,则文件中的函数代码在哪里。但请记住,在windows中,指针的执行地址必须是PAGE_exetuce_READWRITE。那就这样说吧

fncptr(arg1, arg2, arg3);
如果编译器在第一个代码中失败,请执行以下操作: fn_t fncptr;
fncptr=fn_tDWORDMapAddress+0xoffset

函数的参数数是否固定?或者,变量参数是您试图实现的吗?可能与有关。函数的参数数量是否固定?或者,变量参数是你想要实现的吗?可能与。