0

我有一个用例,其中要有条件地选择函数内容。并且该函数指针被传递给其他模块以供以后调用。

void encode_function(int flag)
{
 if (flag == 1)
  encode1();
 if (flag == 2)
  encode2();

  encode_defaults();
}

填充 encode_function() 后,我会将其传递给其他模块,在那里将调用它。我正在尝试用 C 语言实现它,但到目前为止还没有成功。我试图查看dyncall库,但它仅支持动态参数更改。

我正在寻找允许我在运行时更改函数内容的东西。

一些现有的问题有没有办法在运行时修改 Linux C 程序中的函数代码?

4

1 回答 1

3

您基本上是在寻找将代码视为数据的能力,这是编译命令式静态语言(如 c)中很少提供的功能。在运行时修改函数的能力通常归类为高阶函数(您基本上是在尝试将函数作为数据返回代码中的某处)。

如果问题可以通过几个静态函数来解决,可以将函数指针传递给不同的实现,否则我认为c没有能力真正将代码视为数据并动态修改它们。

这个问题试图在 c 中实现高阶函数,但走这么远可能不是你想要的。

于 2015-02-23T16:43:15.020 回答