【问题标题】:C++/G++ hello world application issue, maybe compilationC++/G++ hello world 应用程序问题,可能是编译
【发布时间】:2010-08-22 21:25:36
【问题描述】:

我正在尝试使用 g++ 编译器在 windows 上编译我的第一个 c++ 文件...

我的cpp文件如下-

#include <iostream>
using namespace std;

int main ()
{
  cout << "Hello World!";
  return 0;
}

我在命令提示符下输入这个以进入目录

cd C:\Users\Mark

然后编译我的程序

g++ hello.cpp

它会创建一个文件名 a.exe(默认),但是当我单击它时,命令提示符会快速闪烁打开,然后它就消失了。

我做错了什么?它应该说Hello World!按提示留在那里,对吗?

【问题讨论】:

标签: c++ compiler-construction


【解决方案1】:

您所做的看起来是正确的,但是如果您通过在 Windows 中双击它来启动程序,新的命令提示符将在完成后关闭。由于您已经打开了用于编译的命令提示符,因此也尝试从那里启动程序:

g++ hello.cpp -o hello.exe
hello.exe

【讨论】:

    【解决方案2】:

    这只是从 UI 执行命令行文件的正常 Windows 行为 - 一旦程序退出(在您的情况下立即退出),提示窗口就会关闭。

    从命令行运行它会继续运行。为此,Start &gt; Run &gt; cmd,然后cd 到目录,然后输入a.exe

    或者,您可以等待用户输入以保持窗口打开。这对于测试来说很好,但是实际上从命令行执行程序的人都不会希望在程序应该正确退出时必须按下一个键来阻止程序运行。

    【讨论】:

      【解决方案3】:

      你没有做错任何事。程序末尾没有 readline 或任何东西,所以当它完成执行时它会关闭。在程序末尾添加一个读取字符,使其等待输入终止。

      【讨论】:

      • 哇...它是一个 hello world 应用程序。永远没有理由在生产代码中使用类似的东西。
      • 另一方面,“Hello World”应用程序是由初学者编写的,应该教他们正确的做事方式,而不是快速而肮脏的方式。
      • 或者,如果 Windows 没有让开发 C++ 程序变得极其困难,我们就不必诉诸这种黑客手段。从 IDE 运行程序怎么样?它将打开、运行和关闭它。
      • 本想提到 ide 的事情,但认为它不会有任何好处。我唯一一次这样做是我在视觉工作室时。
      【解决方案4】:

      你做的一切都是对的。命令提示符是否保持打开与您的程序无关。命令提示符本身就是一个程序,它的默认行为是当它启动以响应控制台应用程序的执行时,它会在程序完成后立即关闭。

      您应该自己启动命令提示符,然后在其中运行程序,而不是通过双击图标来启动程序。

      不要陷入添加对某种pause 函数的调用或在程序结束时等待输入的不良做法。您不应该养成在应用程序中针对特定外壳的不良行为硬编码变通办法的习惯。只需以正确的方式使用 shell 即可获得所需的行为。

      【讨论】:

      • 感谢您的警告,所有这些答案都很棒。
      【解决方案5】:

      提示与您的程序或语言无关。这与您的操作系统有关。

      您的程序应该从命令行运行,这将(显然)在完成后将命令窗口保持打开状态。

      如果您真的想要,有一些技巧可以让它保持不变,但这些只是技巧,不一定是好的做法。一种是:

      int main()
      {
          std::cin.get(); // waits for enter
      }
      

      【讨论】:

        猜你喜欢
        • 2014-07-19
        • 1970-01-01
        • 2014-08-26
        • 2012-01-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-08-05
        • 1970-01-01
        相关资源
        最近更新 更多