我已经为JavaScript编写了一个复杂的数学库,它具有从人类可读的数学表达式字符串中生成函数的功能。有没有办法在C++中实现相当于运行时生成的函数?有没有什么方法可以在运行时编译C++代码?
回答
FUZxxl的回答是对的,我建议看看Clang/LLVM设施。
有一个基本的(不太有用)教程file here。以及编写您的Language on LLVM的广泛教程。您可以将您生成的库加载到C++应用程序中。
除非,你有一个性能的关键组件,可以采用使用ChaiScript的(注:我在没有办法隶属于它或作者)
感谢您的有用链接,我会衡量我的选择。是的,组件将是性能至关重要的。我移植图书馆的原因是因为我想提高分形生成程序的速度。 –
您可以执行C++编译器,让它生成共享库并将其加载到程序中以在运行时运行C++代码。请注意,详细信息取决于您正在使用的平台,因为Windows和POSIX具有加载共享库的不同机制。
的“编译语言的方式”是定义你的语法,构建一个解析器,一个AST(抽象语法树)并解释/编译它。当你这样做时,你基本上是编写你自己的编译器/解释器,这很有趣。如果你想让它轻松工作,你可以看看增强的精神。
感谢您的建议,但不幸的是,我想编译的字符串在运行时才会知道,因为我期望它们来自用户输入。我不认为口译员的表现足够满足我的需求。 –
- 1. 有什么方法可以将Visual C++代码编译到Android?
- 2. 代码没有运行但编译?
- 3. 有没有一种方法可以使用我的C#代码编译Javascript?
- 4. 有没有什么办法可以编写简洁的代码?
- 5. 有没有什么方法可以缩短这个代码呢?
- 6. 有没有什么办法可以在eclipse中编译GnuTLS?
- 7. 编译代码和可执行代码有什么区别?
- 8. inno setup编译器没有运行我的C/C++代码
- 9. 在运行时编译JUnit测试:“没有可运行的方法”
- 10. 编译现有的C++代码以在DOS中运行
- 11. 有没有什么方法可以查询数据库,而无需编写代码并运行应用程序
- 12. ASP.NET MVC 5 - @ C#代码没有在运行时被翻译
- 13. 有没有什么方法可以编译和运行程序作为big endian在小端PC?
- 14. 是否有可能编译运行时没有运行库lib的代码?怎么样?
- 15. 有什么方法可以找出硒是否在使用代码运行?
- 16. 为什么我的C代码没有被编译为EXE
- 17. MySQL ODBC在C#.NET项目中失败,但没有运行时编译代码
- 18. 有没有办法在撤销方法时看到执行什么代码?
- 19. 有没有一种方法可以在Twig模板中编写多行代码?
- 20. 有没有什么方法可以确保函数编译为JIT?
- 21. 有没有什么办法可以优化这段代码?
- 22. 有什么办法可以阻止在编译时调用的方法吗?
- 23. 是否可以调试在运行时编译的代码?
- 24. 有没有什么方法可以替代iframe?
- 25. 运行时异常没有编译错误。为什么?
- 26. 代码编译没有
- 27. C#编译finalize方法的运行时?
- 28. 有没有办法从C++程序编译和执行C#代码?
- 29. Vala和Genie之间有什么方法可以编译?
- 30. 有什么方法可以反编译Linux .so?
请限制它为C或C++,否则它有点宽泛。 – fuz
@FUZxxl在那里,它是固定的。 –
你可以调用编译器;)。说真的,我认为LLVM人员在某些时候做了一些C++ JIT工作,你可以看看(虽然我可能记错了)。 –