如何在 C、java 和 C++ 中的任何位置编译和运行任何文件?

     2023-04-13     28

关键词:

【中文标题】如何在 C、java 和 C++ 中的任何位置编译和运行任何文件?【英文标题】:How to compile and run any file at any location in C,java and C++? 【发布时间】:2012-02-08 09:45:06 【问题描述】:

我正在创建一种编辑器类型的应用程序,我想在其中编译和运行(当然也可以创建、编辑、打开)C、C++ 和 Java 文件; 我正在用 Java 创建它。

现在为了编译和运行,我正在使用文件的整个路径 并通过此完整路径编译和运行。

例如。

 compileFileCommand = javac /media/disk/eclipse/\/UniversalIDE/Java/FirstJava.java

try

    System.out.println("Compiling Java File");
    Process compileProcess = Runtime.getRuntime().exec(compileFileCommand);
            compileProcess.waitFor();
    String line = "";
    BufferedReader bri = new BufferedReader(new InputStreamReader(compileProcess.getInputStream()));
    BufferedReader bre = new BufferedReader(new InputStreamReader(compileProcess.getErrorStream()));
    while ((line = bri.readLine()) != null)
    
     System.out.println(line);
    
    bri.close();
    while ((line = bre.readLine()) != null)
    
     System.out.println(line);
    
    bre.close();
    compileProcess.waitFor();
    System.out.println("Done Java Compile.");
 catch (Exception e)

 // TODO: handle exception
 System.out.println("Exception in Java Compile. ");
 System.out.println(e.getMessage());

上面的代码工作正常,并在 java 文件的位置创建了一个类文件。但是 bri.readLine() 总是包含 null。

用于运行 Java 文件

runFileCommand = java /media/disk/eclipse/\/UniversalIDE/Java/FirstJava

对于运行 C 和 CPP 文件的过程相同

用于 C 编译

String compileFileCommand = "gcc " + fileNameWithFullPath; 

对于 C 运行

String runFileCommand = "./" + fileNameWithFullPath.split(".c")[0];

用于 CPP 编译

String compileFileCommand = "g++ " + fileNameWithFullPath;

对于 CPP 运行

String runFileCommand = "./" + fileNameWithFullPath.split(".cpp")[0];

我使用与编译 java 文件相同的代码,但它没有给出任何结果,并且 bri.readLine() 始终给出 null。

请帮我解决这个问题,请给我关于我的应用程序的任何建议。

【问题讨论】:

如果错误太多并且缓冲区已满,编译器将停止,因为您在程序完成之前不读取错误,即您有死锁。我会将错误打印到 System.err。 【参考方案1】:

gcc 和 g++ 的默认输出文件名是a.out,而不是没有扩展名的输入文件名。

尝试runFileCommand = "./a.out",或使用-o 选项和gcc/g++ 来指定输出文件名。

当没有错误或警告时,任何编译命令都不会输出任何内容。

【讨论】:

【参考方案2】:

bri.readLine() 返回 null,因为当 Java 文件编译时没有错误,没有任何内容被打印到标准输出。是这个问题吗?

【讨论】:

如何在vs2010中运行编译c和c++?

参考技术AVS2010 需要先新建工程项目,接着在源文件中添加cpp文件,然后再编写代码,最后编译运行就可以,下面是创建执行C++程序的步骤:1、首先新建项目(文件-->新建-->项目)2、提示需要选择项目的类型,找到Visual... 查看详情

如何在 Mac 终端中使用 C++11 支持编译 C++

】如何在Mac终端中使用C++11支持编译C++【英文标题】:HowtocompileC++withC++11supportinMacTerminal【发布时间】:2012-12-2302:59:33【问题描述】:我想在MacTerminal中编译C++11源代码但失败了。我尝试了g++-std=c++11、g++-std=c++0x、g++-std=gnu++11和g++-s... 查看详情

如何编写混合 C 和 C++ 的 makefile

】如何编写混合C和C++的makefile【英文标题】:howtowritemakefilemixingCandC++【发布时间】:2011-12-2809:08:35【问题描述】:在这个Makefile中,我不知道如何在混合C和C++的同一个Makefile中编译出c对象。如果我首先编译C对象然后运行这个Make... 查看详情

从 O(1) 中的链表中删除任何元素 - Java vs C++

】从O(1)中的链表中删除任何元素-JavavsC++【英文标题】:DeleteanyelementfromalinkedlistinO(1)-JavavsC++【发布时间】:2016-04-1620:16:04【问题描述】:在C++中,我有时会将对象存储在链表中。我会将对象与指向其位置的迭代器相关联。然后... 查看详情

c++中的Posix线程

...sixThreadsinc++【发布时间】:2009-02-2403:32:03【问题描述】:如何在linuxc++中实现posix线程。smme程序保存为“.c并使用c编译器运行是可以的。但是在c++中它给出了错误..我认为我在编译时犯了错误是否有任何标签要包含,例如c++的“-l... 查看详情

为啥 C 和 C++ 编译器在从未强制执行时允许函数签名中的数组长度?

】为啥C和C++编译器在从未强制执行时允许函数签名中的数组长度?【英文标题】:WhydoCandC++compilersallowarraylengthsinfunctionsignatureswhenthey\'reneverenforced?为什么C和C++编译器在从未强制执行时允许函数签名中的数组长度?【发布时间】... 查看详情

c语言中的变量可以在使用之前任何位置进行定义吗

...译器:局部变量可以定义在任何位置。之前的第二个例子中的定义方式,在这种编译器下是合法的。甚至部分支持C99全面的编译器,支持for(int a=0; a<100; a++)在for中定义变量。 三、目前大多数编译器,均支持任何位置定义变... 查看详情

C 中的变量声明位置

】C中的变量声明位置【英文标题】:VariabledeclarationplacementinC【发布时间】:2010-09-2206:04:17【问题描述】:我一直认为在C语言中,所有变量都必须在函数的开头声明。我知道在C99中,规则和C++相同,但是C89/ANSIC的变量声明放置规... 查看详情

通过编译器环境变量或 C 和 C++ 中的命令行标志指定库路径?

...之外使用库时,例如boost或GuidelinesSupportLibrary,我们应该如何指定与该库相关的路径?添加编译器使用的LIBRARY 查看详情

如何使用嵌入在 C++ 中的单声道编译 C# 代码?

】如何使用嵌入在C++中的单声道编译C#代码?【英文标题】:HowdoyoucompileC#codeusingmonoembeddedinC++?【发布时间】:2020-08-2300:17:12【问题描述】:如何使用C++编译.cs文件我已经搜索了Mono的所有文档,但找不到仅从C++中的嵌入式Mono运行... 查看详情

[c++]c++的常量究竟是什么?它与c#和java中的常量有什么区别?应该如何理解常量?(代码片段)

在C++中,const虽然是常量,然而这个常量比起C#/Java中的常量,似乎又有点不对劲文章面向的人群是拥有C#/Java基础的程序员运行时赋值C++的常量不是在编译时就直接确定值的,你在运行时也可以初始化它,下面是示例代码:#inc... 查看详情

从 Java / C# 的角度理解 C++ 编译器

...的Java/C#程序员,最近开始学习C++。问题是,我无法理解如何构建各种头文件和代码文件。这似乎主要是由于我对编译器如何将所有内容链接在一起缺乏了解。我尝试阅读一些教科书,但我的Java和C#知识严重影响了我 查看详情

上机考试如何选择编程语言和编译器?

  经验总结:很多考试都会限定程序的运行时间的上限,因此选择尽可能快的编程语言是非常重要的。一般来说,可供选择的语言有C,C++,JAVA等。但是JAVA的执行比较慢,因此较常使用的是C或者C++。考虑到C++的语言是向下兼容C... 查看详情

C 和 C++ 编译器的问题

...到问题。我使用的是VisualStudio2008,代码是C和C++。我希望任何人都可以查看以下两行代码,一行来自C源文件,另一行来自C++源文件。这两个文件都包含在DLL中。我还包括了两行代码的反汇编。ewxlcom.cmemcpy(pCM-& 查看详情

我们如何在c,c++中控制/调度线程的执行?

在本文中,我们深入探讨了一个较低级别的主题,即如何调度和控制程序中线程的执行。为此,我们将同时使用C和C++。从以下位置下载源代码:https://github.com/prateekparallel/InterThreadCommunication前两个示例在C中,最后一个示例在C++... 查看详情

C、C++ 和 JAVA 的 Emacs 中的 Eclipse 样式函数完成?

...orC,C++andJAVA?【发布时间】:2010-09-1220:33:39【问题描述】:如何在Emacs中为C、C++和JAVA获取Eclipse风格的函数补全?我喜欢Emacs文本编辑器的强大功能,但缺少“智能感知”功能让我使用Eclipse。【问题讨论】:【参考方案1】: 查看详情

如何在vs2010中运行编译c和c++?

...单选项一直都是灰色不可选中  的状态  2.如何在VS2010中运行C程序?...   3.有没有VS2010的相关教程啊?...好多东西跟VS6.0不一样的  只要能解决好,就算只能回答一个问题都给分,谢谢了!1、打开V... 查看详情

c语言中的extern是啥,有啥作用啊?

谢谢extern关键字可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。这里起到的是声明作用范围的用处。extern的另外用法是当C和C++混合编程时假如c++... 查看详情