2013-05-02 135 views
0

當我編譯一個程序並運行exe文件時,它會自動關閉。有什麼辦法可以避免它?我知道你可以放system("pause"),但是我聽說建議不要使用它,或者你可以在最後放入cin,並等待用戶在關閉前按下某些東西。但是有什麼「真正的」官方方式讓程序停止?在編譯後暫停C++程序

+8

運行它從命令提示符控制檯:) – Ryan 2013-05-02 22:01:55

+0

這將工作對我來說,但如果我把exe文件給別人運行,我不希望他們使用命令提示符 – FJam 2013-05-02 22:03:01

+1

你可以給他們一個批處理文件,最後的'暫停'命令。這樣,你可以避免在代碼中使用'system(「pause」)',如果有人想從命令提示符運行它,他們可以。 – austin 2013-05-02 22:05:05

回答

1

你的程序有,你想要它做什麼。 這意味着,對於'C++',在沒有更多指令運行時終止。

你有很多方法來停止你的程序(等待一些信號,從套接字接收數據,...)。從stdin中讀取可能是最簡單的方法。

system("pause")不推薦使用,因爲它只是調用系統功能Pause,在某些環境中可能沒有這種功能。

+1

或者更糟糕的是,這個功能確實可怕。 – chris 2013-05-02 22:07:37

2

您是否使用Visual Studio?如果是和它的前2010再按CTRL + F5版本會做的伎倆

如果一個版本之後....

這可能幫助

http://connect.microsoft.com/VisualStudio/feedback/details/540969/missing-press-any-key-to-continue-when-lauching-with-ctrl-f5

+0

nope,我使用codeblocks和unix終端(Vim) – FJam 2013-05-02 22:09:57

+0

然後我很抱歉...因爲我的回答根本不適用於您的問題......它會幫助您將問題的開發環境包括在內...... – Mamonu 2013-05-02 22:12:13

+0

CodeBlocks將在Windows中從IDE運行時添加暫停。不過,我認爲這個問題更多的是可執行文件。 – chris 2013-05-02 22:14:29

-1

的Windows解決方案visual studio compiler只:

fflush(stdin); 
getchar() 
+0

從什麼時候可以刷新標準輸入? – 2013-05-03 00:21:34

+0

@ThomasMatthews根據msdn:fflush輸入流是C標準的擴展 – 2013-05-03 05:53:42

0

如果 「開始不調試」 按Ctrl +F5,那麼程序退出後,控制檯窗口將保持打開狀態,並顯示一條Press any key to continue . . .消息,直到您按任何按鈕。這是最好的解決方案,因爲它不需要任何代碼修改,而如果您進行調試,您可以在任何地方設置斷點。

適用於所有版本的Visual Studio,非常標準的東西。