2010-04-14 114 views
8

我試着通過編譯C程序來試用Visual Studio 2010。在「DOS」命令窗口中顯示解決方案後,該窗口立即關閉。在Visual Studio 2008中,獲取消息的任何按鍵都可以繼續,按下一個按鍵將關閉命令提示符窗口。我如何在2010年設置這種行爲?程序結束後退出Visual Studio 2010

+1

VS2010沒有什麼不同,在程序結束時按Ctrl + F5調用「按任意鍵」提示。 – 2010-04-14 18:35:11

+1

是的,我知道這個「沒有調試就開始」的快捷方式,但在我的情況下,控制檯窗口立即被解散。這很奇怪。 – yCalleecharan 2010-04-14 18:41:54

回答

19

經過一番Google搜索,我發現this解決方案不涉及修改您的代碼。它包含一個解決方法,涉及修改.vcxproj文件。

爲了從Microsoft Visual C++ 2010 Express中做到這一點(我假設它是Visual Studio 2010的相似),打開您的項目並導航到以下菜單:

Project->$YOURPROJECTNAME Properties... 
    ->Configuration Properties 
     ->Linker 
      ->System->SubSystem 

然後使用下拉菜單選擇控制檯(/ SUBSYSTEM:CONSOLE)並應用更改。

「沒有調試就開始」應該現在就做正確的事情。

+0

很好。這工作非常好。我也給你一個投票。我正在使用Express版本。 – yCalleecharan 2010-07-06 15:07:39

+0

非常感謝您在此處報告此錯誤。 – yCalleecharan 2010-07-06 15:18:14

+0

這對我很好,謝謝。有沒有辦法自動將此解決方案應用於所有項目? – petric 2014-09-03 14:29:39

2

這是正常的。 「DOS」控制檯窗口附加到您的程序,並應該在您的程序完成時退出。如果您希望保持打開狀態,則需要將代碼添加到程序中以保持打開狀態。您只需添加一個打印語句,然後將語句輸入到程序的最後。

+0

好的,謝謝...代碼接受來自鍵盤的輸入。 – yCalleecharan 2010-04-14 18:18:18

0

如果您在沒有調試器的情況下啓動應用程序(「無需調試即可啓動」),控制檯窗口將保持打開狀態,直到您按下某個鍵。

+0

嗯......其實我做到了。我知道這也適用於Visual Studio 2008,這個「命令」就是我用來運行我的程序的。所以我對2010年的這種不同行爲感到有些驚訝。 – yCalleecharan 2010-04-14 18:29:01

+0

我可以確認在2010年使用「無需調試就開始」不會在程序退出後保持控制檯窗口打開。 – yCalleecharan 2010-04-14 18:40:36

+0

現在,這很奇怪。我的Visual Studio沒有相同的行爲... – 2010-04-14 19:27:44

0

您可以添加此功能,並調用它直接從主()返回前:在了Bjarne Stroustrup的網站

void keep_window_open() 
{ 
    // clear buffer 
    fflush(stdin); 
    printf("Please enter a character to exit\n"); 
    char ch; 
    ch = getchar(); 
    return; 
} 

我適應它從一個C++版本的工具頭文件: http://www.stroustrup.com/Programming/std_lib_facilities.h

+0

非常感謝。爲了避免編譯錯誤,我必須在開始括號後面{在函數定義之後移動「char ch」行。我認爲「fflush(stdin)」這一行是C++代碼,並且在C中不起作用。 – yCalleecharan 2010-04-14 20:33:35

+0

根據c FAQ: http://c-faq.com/stdio/stdinflush,您是對的。 html fflush僅爲輸出流定義。 該FAQ條目的鏈接討論瞭如何刷新輸入: http://c-faq.com/stdio/stdinflush2.html – Darel 2010-04-14 21:17:34

+0

感謝您的鏈接。 – yCalleecharan 2010-04-14 21:32:44

1

FWIW,「無需調試即可開始」命令在VS2010中的工作方式與之前Visual Studio版本中的方式完全相同(也就是說,對於控制檯項目,當進程終止並按「任意鍵繼續」時,控制檯仍保持打開狀態。 「提示)。

那麼,究竟如何讓VS2010運行你的程序?如果您使用的是「Ctrl-F5」快捷鍵,您可以在「選項/環境/鍵盤」中確認Ctrl-F5綁定到Debug.StartWithoutDebugging嗎?

此外,你可以嘗試運行你的程序使用菜單(「調試/開始無調試」)?

+0

謝謝。首先編譯文件,然後構建它,然後使用Debug> start without debugging。按照您的說法,我已經分配了「Ctrl-F5」,但我得到了相同的行爲。我承認這很奇怪,因爲Visual Studio 2005可以正常工作。 – yCalleecharan 2010-04-14 21:31:02

+0

@yCalleecharan:有趣 - 我不知道一個控制這個的設置。 – 2010-04-14 21:42:57

+0

是的,很難相信這種奇怪的行爲。 – yCalleecharan 2010-04-15 06:57:41

3

發生這種情況的原因是因爲現在在VS 2010中可以默認創建一個空的通用C++項目,而無需通過該向導。這導致VS 2010沒有正確設置Console (/SUBSYSTEM:CONSOLE)標誌,因此VS2010不知道它是一個控制檯應用程序,它將發送通常的「按任意鍵...」提示符。

如果您從新建項目菜單中創建控制檯應用程序項目類型,則不會出現此問題。

但是你可以通過Project/Settings來設置你自己和其他很多人的標誌,因爲上面的帖子已經正確回答了!

2

如果您希望保持打開狀態,則需要將代碼添加到程序中。喜歡它

#include <stdio.h> 
#include <stdlib.h> 

... main(...) 
{ 
    your codes 
     . 
     . 
     . 

    system("pause"); 

} 

如果您添加此代碼,您的黑屏仍然處於打開狀態。 「stdlib.h頭文件中的」system(「pause」)「」。

+0

如果你解釋這應該如何工作,你的答案會好一點。事實證明,這是一個神祕的咒語,讀者不會學到太多東西。 – dmckee 2012-10-27 01:14:59

+0

謝謝老兄,努力工作 – Lokesh 2013-05-10 06:34:06

1

帶來 「開始沒有調試」 的調試菜單...

工具>>定製>>命令(TAB)>>菜單欄(下拉列表)>>調試(控制選項)>>添加命令(按鈕)>>調試(類別列表)>>無調試開始

使用「無調試開始」將允許VS2010在退出前顯示「按任意鍵繼續」短語。