我想知道是否有类似C语言的解释器.也就是说,在Linux终端中我可以输入"python"然后在该解释器中编码.(我不确定翻译正确的词).这对于测试不同的东西真的很有帮助,我很好奇C是否存在类似的东西.虽然我对此表示怀疑.我能想到的唯一能做的就是C shell ......
它需要一种方法来调用函数,其名称存储在类似于eval的字符串中.你能帮我吗?
我正在检查一个makefile,看到使用的库是:
LIBS = -lcppunit -ldl
Run Code Online (Sandbox Code Playgroud)
lcppunit是单元测试库.那是什么ldl?
我读过C 中的 eval,如果您编写 C 字符串解析器/评估器,则可以将其映射到主 C 程序中的特定函数。但据我所知,它实际上并没有将它放入可执行内存中,就像JIT 编译器似乎所做的那样。我不完全理解 JIT 编译器(我从来没有做过),但我明白了要点。
所以我想知道的是,您是否可以在 C 中创建某种 JIT 编译器,而无需做太多解析 C 字符串和转换为 AST 之类的工作。基本上,您能否像在 JavaScript 中那样动态创建一个函数(在 C 中),以便该函数与任何其他 C 函数完全相同(即,它在程序的可执行部分中直接编译为可执行的机器代码)事物)。
如果不可能这样做,第二种方法是动态加载 C 导入/文件/模块。因此,您衍生出一个进程,该进程告诉 clang 编译器编译一些库函数,完成后,在不停止当前程序的情况下,它将新程序库链接/附加到自身,因此可以以这种方式执行代码.
如果这是不可能的,也许一个选择是简单地在后台重新编译程序,然后将当前程序与从头启动的新程序交换。但这将是非常原始的。
试图弄清楚您是否在 C 中有一些用于您自己的自定义函数数据类型的结构,然后如何以最优化的方式在 C 中执行该函数。