有一些解释性语言,例如 Lisp、Tcl、Perl 等,可以在运行时轻松地在代码中定义 lambda/proc/sub 并在同一会话中对其进行评估。
那里有编译语言,例如 C++,它的执行速度比解释语言快得多,但是在运行时在编译程序中定义一个函数并执行它并不容易,如果可能的话。
这里的问题是执行以下操作:
在运行时定义函数:例如,基于初始输入数据导出数据的分析模型。
在循环中快速执行上述函数:例如,应用派生的分析模型来分析传入的数据。
我看到的一种解决方案不是很漂亮:
基于初始输入数据,在嵌入式 Tcl 中导出了表示分析模型的过程。
查找表是通过在 Tcl 中对一组样本点进行评估而创建的,乐观地说,这些样本点将涵盖适用范围。
查找表从 Tcl 解释器传回二进制文件(用 C++ 开发)。
然后通过在查找表中“足够接近”的值之间进行插值来分析传入的数据。
上述解决方案有效,但在概念和计算方面存在相当多的问题。因此问题是:是否可以纯粹在 C++ 中定义一个函数并使其可用于在同一运行时会话中执行?
从概念上讲,是否有可能将函数创建为字符串,在内存中编译,然后以某种方式将其链接回正在执行的二进制文件中?