当前位置:  开发笔记 > 编程语言 > 正文

如何在Visual C++中保持控制台窗口打开?

如何解决《如何在VisualC++中保持控制台窗口打开?》经验,为你挑选了5个好方法。

我开始使用Visual C++,我想知道如何保持控制台窗口.

例如,这将是典型的"hello world"应用程序:

int _tmain(int argc, _TCHAR* argv[])
{
    cout << "Hello World";
    return 0;
}

我错过的是什么?



1> 小智..:

Ctrl+F5而不是仅仅启动项目F5.

Press any key to continue . . .程序退出后,控制台窗口现在将保持打开状态.

请注意,这需要Console (/SUBSYSTEM:CONSOLE)链接器选项,您可以按如下方式启用它:

    打开项目,然后转到解决方案资源管理器.如果您在K&R跟随我,您的"解决方案"将是"hello",其中包含1个项目,也是"hello"的粗体.

    右键单击"hello"(或任何项目名称).

    从上下文菜单中选择"属性".

    选择"配置属性>链接器>系统".

    对于右侧窗格中的"子系统"属性,请单击右侧列中的下拉框.

    选择"控制台(/ SUBSYSTEM:CONSOLE)"

    单击"应用",等待它完成所做的任何操作,然后单击"确定".(如果"Apply"显示为灰色,请选择其他子系统选项,单击Apply,然后返回并应用控制台选项.我的经验是OK本身不起作用.)

CTRL-F5和子系统提示一起工作; 它们不是单独的选择.

(来自http://social.msdn.microsoft.com/Forums/en-US/vcprerelease/thread/21073093-516c-49d2-81c7-d960f6dc2ac6的DJMorreTX提供)


这运行程序没有调试; 最好有一个在调试和普通运行模式下都能运行的解决方案.
对于那些无法在makefile项目中使用此解决方案的人来说,这是由于Visual Studio中的一个错误.我刚刚发布了修复答案.

2> Gordon Wilso..:

标准方式是cin.get()在您的退货声明之前.

int _tmain(int argc, _TCHAR* argv[])
{
    cout << "Hello World";
    cin.get();
    return 0;
}


-1为`_tmain`.我为`cin.get()`投了另一个-1而不是为F5设置断点或使用Ctrl F5.但我只允许一个downvote.
@Cheers:`_tmain`有什么问题?这是编写面向控制台子系统的Windows应用程序的标准方法.偏离这个标准是不好的做法.显然,这里没有人谈论便携式代码; 问题是Visual C++和`_tmain`是示例代码中出现的签名.现在是放弃这种宗教的时候了.Windows默认为"非标准",并且遵循***标准有很好的理由.
@CodyGray:我对'_tmain`的downvote是因为它完全没必要*非标准*(国际C++标准需要一个简单的`main`),并且因为它使用了微软的`T`宏方案,这是不必要的复杂性和措辞用于支持Windows 9x.如果你觉得偏离标准是不好的做法,那么你绝对不应该使用`tmain`.使用`tmain`没有充分的理由,除了拖钓或专业人士,显示一个人的完全无能.
这有效但Ctrl + F5更好,特别是在跟踪全局对象销毁等时.
我知道,因为程序已经在使用cout,它已经被处理了,但我认为值得一提的是你需要#include 以及使用std命名空间:std :: cin.get() .
"标准方式"?当然这只是"单向"?

3> Sam Harwell..:

在线上放一个断点return.

你在调试器中运行它,对吧?


大多数情况下很困难,因为程序中可能有多个退出点

4> Marcos Marin..:

另一种选择是使用

#include 
system("pause");

虽然这不是很便携,因为它只能在Windows上运行,但它会自动打印

按任意键继续...



5> JBentley..:

对于makefile项目,由于Visual Studio中的错误(至少在2012版本之前 - 我还没有测试过2013年),接受的解决方案失败了.这个bug 在这里详述.

为了在makefile项目上终止程序后让控制台暂停,请执行以下步骤(对于2010 - 2012以外的版本,这可能会有所不同):

1)传递/SUBSYSTEM:CONSOLE给链接器.- 编辑:见下文.

2)在文本编辑器中打开项目文件(.vcxproj).

3)在根标签内插入以下内容:


  
    Console
  

4)在解决方案中重新加载项目.

5)运行程序而不调试(CTRL + F5).

编辑:

根据我在下面的评论,设置链接器选项/SUBSYSTEM:CONSOLE实际上与makefile项目无关(如果您使用的是MSVC以外的编译器,则不一定可能).重要的是该设置被添加到.vcxproj文件中,如上面的步骤3所示.

推荐阅读
mobiledu2402851323
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有