我想知道是否有任何方法可以从数学形式的stdin
获取用户定义的函数(带有两个变量)并将其转换为函数指针。换句话说,我想要做的就是运行:
> ./program a*b
程序将其转换为返回函数的指针:
return a*b;
因此,program
的输出是
user_defined_function(INT)(int)的
这将是一个更大的计划的一部分。
如果我知道如何解决这个问题,我会发布一些代码,但我不会......我只需要帮助将用户定义的函数转换为函数指针的步骤,因为我知道如何将用户定义的函数转换为C函数。
答案 0 :(得分:2)
没有简单的解决方案,因为你必须生成代码。
我想到的简单解决方案:
我担心它不会比那更简单。
另一种解决方案是编写/使用表达式解析器并解析数学表达式,然后在运行时进行求值...
答案 1 :(得分:2)
只是为了好玩,这里有CINT
的链接CINT是 C和C ++代码的解释器 ......
... CINT脚本可以调用编译的类/函数,编译后的代码可以回调CINT解释函数 ......
我并不是说这是一个“好”的解决方案(事实上它可能非常“坏”),但是有些人已经付出了很多努力 - “略少于400,000行代码“ - 进入这个项目; - )
快乐的编码。
答案 2 :(得分:1)
这在C中很难做到,因为它是一种编译语言。你可以做 Mario The Spoon 建议,或者你可以切换到像ruby或javascript这样的动态语言。这些语言有一个“eval”方法,它接受字符串并在字符串中执行代码,并且它们能够动态定义函数。
答案 3 :(得分:0)
您提出的建议完全有可能,您只需编写将用户文本转换为机器代码的代码。这称为编译器。 gcc
与您的程序非常相似,如果它运行了它生成的代码。