C ++ / G ++ hello world应用程序问题,可能是编译

时间:2010-08-22 21:25:37

标签: c++ compiler-construction

我正在尝试使用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!在提示上并留在那里,对吗?

5 个答案:

答案 0 :(得分:11)

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

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

答案 1 :(得分:2)

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

从命令行运行它将保持它。为此,Start > Run > cmd,然后cd到目录,然后输入a.exe

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

答案 2 :(得分:2)

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

答案 3 :(得分:2)

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

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

不要陷入向某种pause函数添加调用或在程序结束时等待输入的错误做法。您应该养成硬编码解决方案的习惯,以便将特定shell的不良行为导入您的应用程序。只需以正确的方式使用shell来获得您想要的行为。

答案 4 :(得分:1)

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

你的程序应该从命令行运行,这显然会在命令行完成后退出命令窗口。

如果你真的想要的话,有一些技巧可以让它保持原状,但这些只是技巧,而不一定是好的做法。一个是:

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