是否可以要求用户在 C++ 中提供函数定义?[已结束]

Is it possible to ask the user for a function definition in C++? [closed]

提问人:MOON 提问时间:9/17/2023 更新时间:9/17/2023 访问量:111

问:


想改进这个问题吗?通过编辑这篇文章来更新问题,使其仅关注一个问题。

2个月前关闭。

假设我编写了一个程序,该程序最小化了 C++ 中的给定函数。 是否可以要求用户最小化函数,或者从磁盘上的文件中读取此类函数的定义,然后继续最小化它? 在代码项目本身中包含函数定义很容易,但每次我都必须再次编译代码。我想知道是否可以在编译后和从磁盘上的文件运行可执行文件期间读取函数定义。

C++ 用户输入

评论

0赞 Dave Newton 9/17/2023
是的,这是可能的。根据你的意思,你是否要求不同的方法来获取字符串,而不是硬编码它?
4赞 Jan Schultke 9/17/2023
您基本上是在要求 JIT 编译或 C++ 脚本引擎。两者都是可能的,但你需要使你的设计目标更加明确。
1赞 Sam Varshavchik 9/17/2023
“minimize” 是什么意思?请具体说明。
1赞 chrysante 9/17/2023
@SamVarshavchik en.wikipedia.org/wiki/Mathematical_optimization
1赞 Raymond Chen 9/17/2023
这回答了你的问题吗?如何在运行时在 c++ 中“编译”表达式?

答:

4赞 Ahmed AEK 9/17/2023 #1

如果函数是数学函数,那么你可以将其符号化地解析为抽象语法树,然后在运行时对其进行评估(查看 symengine 库)f = a*x+b

如果函数是一个编程函数,那么你要么需要一种脚本语言,如 lua、tcl 或 python 嵌入到你的可执行文件中,要么你需要一个 jit 编译器,比如 julia 中的编译器(也是可嵌入的)

最后,如果你可以在应用程序中附带一个 gcc 编译器,你可以将函数编译为 dll 并在运行时加载它,但这是最麻烦的。