求解用户定义的变量方程

我非常感谢C,Python,C ++或Javascript中的答案。 我读了几本书,做了所有的例子。 现在我想写一个简单的程序。 但是,我已经遇到了以下障碍:

我的目的是从用户那里获取一个等式并将其保存在变量中,例如:

-3*X+4 or pow(2,(sin(cos(x))/5)) > [In valid C Math syntax] 

然后计算某个X值的给定表达式。 像这样的东西:

 printf("%g", UserFunction(3.2)) // Input 3.2 for X in User's Function and Print Result 

有任何想法吗? 对于我的生活,我无法弄清楚这一点。 令我沮丧的是,解决方案可能只是一个非常简单的解决方案。 先感谢您。

C中没有一种简单的方法可以做到这一点,但我认为muParser可能对你有用,它是用C ++编写的,但有C绑定。 ExprTk也是一个选项,但看起来它只是C ++ ,从好的方面看起来更容易获得有趣的结果。

另一种选择可能是表达评估 ,它是Libav的一部分。 它在C中 , eval.h头文件对接口有一些很好的描述。

在C,C ++或Java等编译语言中,没有简单的方法可以做到这一点 – 您基本上必须重写整个编译器(或使用带解释器的外部库)。 这在像Python和Javascript这样的“脚本”语言中是微不足道的,它们具有在运行时评估表达式的函数(通常称为“eval()”)。 此function通常很危险,因为它也可以执行具有副作用的调用函数。

Ffmpeg / libav有一个很好的简单函数求值器,你可以使用它。