2010-08-22 82 views
2

我试图编译与g ++编译器窗口我的第一个C++文件...C++/G ++ Hello World应用程序的问题,也许编译

我的cpp文件如下 -

#include <iostream> 
using namespace std; 

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

我在命令提示符下键入这个去的目录

cd C:\Users\Mark 

然后编译我的程序怎么办

g++ hello.cpp 

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

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

+0

可能的欺骗:http://stackoverflow.com/questions/1908512/c-hold-the-console-window-open – goldPseudo 2010-08-22 21:36:35

回答

11

你做了什么看起来是正确的,但是如果你通过在Windows中双击来启动程序,一旦它完成,新的命令提示符将被关闭。既然你已经有一个命令提示符打开编辑,尝试从那里启动程序,也:

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

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

从命令行运行它会保持它。要做到这一点,Start > Run > cmd,然后cd到目录,然后键入a.exe

或者,您可以等待用户的输入以保持窗口打开。对于测试来说没什么问题,但没有人从命令行实际执行程序,他们希望不得不点击某个键来停止程序的运行,否则它应该正确退出。

1

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

你的程序应该从命令行运行,当命令行完成时(显然)会离开命令窗口。

有一些技巧可以让它保持在真的想要的,但这些只是技巧,并不一定是好的做法。一个会是:

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

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

+1

-1这是不好的做法。正确使用外壳。 – 2010-08-22 21:33:38

+0

哇...它是一个你好世界的应用程序。在生产代码中使用类似的东西永远不会有任何理由。 – jdc0589 2010-08-22 21:47:43

+1

另一方面,“Hello World”应用程序是由开始的程序员写的,他们应该被教导正确的方式来做事情,而不是快速和肮脏的方式。 – 2010-08-22 21:49:35

2

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

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

不要陷入坏的做法,增加一个调用某种pause函数,或等待在程序结束输入。您应该而不是养成了将特定shell的不需要的行为硬编码到应用程序中的习惯。只需使用shell以正确的方式获取所需的行为即可。

+0

感谢您的警告,所有这些答案都很棒。 – 2010-08-22 21:35:09