我正在尝试从字符串中解析动态函数,例如:
char* func = "app.exe /path:\"@FileExists('filepath', @FileDelete('filepath'), @MsgBox('file not found','error',1))\";
我想解析
@FileExists('filepath', @FileDelete('filepath'), @MsgBox('file not found','error',1))
我该怎么做?
答案 0 :(得分:4)
C ++没有动态函数的概念。如果你正在寻找一种带字符串并将其作为C ++代码执行的函数,那你就不走运了。
答案 1 :(得分:4)
正如乔希已经说过,使用一些动态脚本语言可能是最好的主意。 您应该查看Lua,它很容易嵌入,很小并且可以在MIT许可下使用。
答案 2 :(得分:3)
我假设您正在寻找字符串中的代码。在C ++中,一旦编译了程序,就没有函数或变量名称的记录。这只是地址。
可以为函数设置自己的字符串映射。然后,您必须构建一个函数/名称和参数树,并手动调用这些函数。基本上,您必须为C ++的某个子集编写解释器,并使用预定义的可用函数集。这绝对不是初学者的任务,但如果你真的想要,那么看看Recursive-Descent parsing。这是迄今为止开始编写解释器的最简单方法。如果您的需求不断增长,请查看一些更强大的解析器,例如ANTLR或flex/bison
可以在C ++中嵌入更多动态脚本语言。事实上,大多数脚本语言都有某种C接口,你可以用C语言做任何事情,你可以用C ++做。查看类似Boost.Python或this example的内容,了解VBScript。