这可能是一个尴尬的问题,因为答案显而易见。
我已经使用Visual Studio多年了,但这是我第一次进行“控制台应用程序”开发。
当我运行我的应用程序时,控制台窗口弹出,程序输出出现,然后窗口关闭,应用程序退出。
有没有办法让它保持打开状态,直到我检查完输出,或者在窗口关闭后查看结果?
这可能是一个尴尬的问题,因为答案显而易见。
我已经使用Visual Studio多年了,但这是我第一次进行“控制台应用程序”开发。
当我运行我的应用程序时,控制台窗口弹出,程序输出出现,然后窗口关闭,应用程序退出。
有没有办法让它保持打开状态,直到我检查完输出,或者在窗口关闭后查看结果?
如果您在不调试的情况下运行程序(Ctrl+F5),默认情况下会提示您按回车键关闭窗口。如果您想使用调试器,您应该在最后一行设置断点。
ctrl+f5
不起作用,右键点击项目时没有属性(Properties)
选项,同时 扳手图标(wrench icon)
是灰色的。 - ksha右键单击您的项目
属性 > 配置属性 > 链接器 > 系统
在 子系统
选项中选择 控制台 (/SUBSYSTEM:CONSOLE) 或者只需在文本字段中输入 Console!
现在尝试运行它...应该可以工作了。
从Visual Studio 2017 (15.9.4)开始,有一个选项:
Tools->Options->Debugging->Automatically close the console
来自Visual Studio文档的相关片段:
调试停止时自动关闭控制台:
告诉Visual Studio在调试会话结束时关闭控制台。
以下是 C/C++ 的一种方法:
#include <stdlib.h>
#ifdef _WIN32
#define WINPAUSE system("pause")
#endif
将以下代码放在程序顶部,如果它在Windows系统上(#ifdef _WIN32
),则它会创建一个名为WINPAUSE
的宏。每当您想要让程序暂停,请调用WINPAUSE;
,它将使用DOS命令使程序暂停。对于其他像Unix / Linux这样的系统,控制台无论如何都不应在程序退出时退出。
getchar()
或std::cin.get()
,没有必要通过系统调用调用特定于平台的可执行文件。 - Dan Bechard进入调试菜单 -> 按下 无调试启动
如果你在使用.NET,需要将Console.ReadLine()
放在程序结尾前面。
它会等待<ENTER>
键。
Console.ReadKey()
等待任意按键。 - Fredrik Mörk试着在main()
函数返回之前调用getchar()
函数。
(/SUBSYSTEM:CONSOLE)对于我的vs2013没有起作用(我已经拥有它)。
"无调试运行"不是一个选项,因为我不想在调试和查看输出之间切换。
最后我使用了:
int main() {
...
#if _DEBUG
LOG_INFO("end, press key to close");
getchar();
#endif // _DEBUG
return 0;
}
在Qt Creator 2.6之前使用的解决方案。现在虽然Qt正在不断发展,但VS正在另一条道路上前进。据我记得,在VS2008中我们不需要使用这样的技巧。
system("pause");
这里有一个解决方案,它 (1) 不需要进行任何代码更改或断点调试, (2) 在程序终止后暂停,因此您可以看到打印的所有内容。它将在按下 F5 或 Ctrl+F5 后暂停。主要的缺点是在 VS2013 Express(经过测试)中,它不会加载符号,因此调试非常受限制。
Create a batch file. I called mine runthenpause.bat
, with the following contents:
%1 %2 %3 %4 %5 %6 %7 %8 %9
pause
The first line will run whatever command you provide and up to eight arguments. The second line will... pause.
Open the project properties | Configuration properties | Debugging.
$(TargetPath)
(or whatever is in "Command").runthenpause.bat
.runthenpause.bat
时,它将启动您的应用程序,并在应用程序终止后暂停,以便您查看控制台输出。