2010-08-22 93 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