【发布时间】:2015-07-02 23:03:03
【问题描述】:
我了解可以使用 JavaCompiler 通过字符串编译 java 源代码。使用包含我的 java 代码的长字符串,我可以测试我的代码是否可编译。
来源:http://docs.oracle.com/javase/6/docs/api/javax/tools/JavaCompiler.html
一个例子:http://www.java2s.com/Code/Java/JDK-6/CompileaJavafilewithJavaCompiler.htm
我的问题是:我有一个包含可编译 C++ 代码的长字符串。我可以使用某种形式的 java 库做类似的事情吗?还是不可能的?
谢谢
编辑 1:根据要求,字符串可以由用户生成(在 GUI - JTextArea 中键入)或从 .cpp 文件中读取。
【问题讨论】:
-
简而言之:不,C++ 运行时中没有内置编译器。您当然可以编写代码,通过在该输出上运行编译器来将程序的某些输出编译到另一个程序中[并且至少一些编译器可以使用程序中的
stdout作为编译器的输入来做到这一点,所以您实际上不需要生成这样的文件] -
Aww .. 感谢您的回复... 我的真正目标是当我的程序(使用 java)是读取 java 源代码的 C++ 并测试输入源代码是否可编译。由于我不能这样做,我想我必须取消该功能:(.. 谢谢你的洞察力。
-
您可以将字符串重定向到
gccvia the command line...(通过调用system) -
你可以通过创建一个临时文件并调用
system("g++ temfile.cpp");或类似的东西来做到这一点。或者您可以与编译器库集成,例如 libclang,它允许您在自己的程序中构建自己的编译器 - 但这比调用系统要多得多。 -
如果你有 gcc,你可能还有
popen,这是一个更好的方法来确定你的源代码是否编译。system的反馈相当有限。
标签: java c++ compilation