我有一个用例,其中要有条件地选择函数内容。并将该函数指针传递给其他模块以供以后调用。
void encode_function(int flag)
{
if (flag == 1)
encode1();
if (flag == 2)
encode2();
encode_defaults();
}
填充 encode_function() 后,我会将其传递给其他模块,并在其中调用它。 我试图用C语言实现它,但到目前为止没有成功。我试着看看 dyncall库,但它仅支持动态参数更改。
我正在寻找允许我在运行时更改函数内容的东西。
一些存在的问题Is there a way to modify the code of a function in a Linux C program at runtime?
最佳答案
您基本上是在寻找将代码视为数据的能力,这是 c 等编译命令式静态语言中很少提供的功能。在运行时修改函数的能力通常被归类为高阶函数(您基本上是在尝试将函数作为代码中某处的数据返回)。
如果问题可以通过几个静态函数来解决,你可以将函数指针传递给不同的实现,否则我认为 c 没有真正将代码视为数据并即时修改它们的能力。
This question尝试在 c 中实现高阶函数,但走到这一步可能不是您想要的。
关于在运行时更改 C 函数内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28678513/