2010-04-14 43 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在退出前显示“按任意键继续”短语。

相关问题