【问题标题】:C++ exit(0) no longer exits my program immedately after configuration changed from Debug to Release配置从 Debug 更改为 Release 后,C++ exit(0) 不再存在我的程序
【发布时间】:2014-11-29 15:07:16
【问题描述】:

通常std::exit(int) 会立即终止您的程序,但由于某种原因,我将exit(0) 放在任何地方,而不是立即退出,而是在控制台上首先询问“按任意键继续...”。

即使我将exit(0) 作为main() 的第一行,它仍然提示我在退出前按一个键。

我所做的只是将我的项目更改为在发布模式下编译而不是在 Visual Studio 中进行调试, 通常在调试中,我会看到项目运行为:
C:\User\<Username>\<File path>\<Project name>\Debug\<Project name>.exe
然而,在发布模式下,它运行为:
C:\Windows\system32\cmd.exe

我不知道这是否有什么不同..
有没有办法让它在发布模式下调用诸如 exit() 之类的命令时立即终止?

【问题讨论】:

  • press any key to continue... 是 Visual Studio,而不是您的程序。

标签: c++ visual-studio visual-studio-2013 exit


【解决方案1】:

这不是唯一改变的事情。您可能还使用“Ctrl+F5”而不是“F5”来运行程序。或者在调试模式下启用的调试检查用于检测程序中的崩溃或不再被检测到的东西。或其他一些可能的更改。

在任何情况下,直接运行您的可执行文件(例如,从 Windows 资源管理器或命令提示符)并查看“按任意键继续...”不会出现在那里。您也可以只使用“F5”(默认情况下)运行它,尽管这种替代方法有其他副作用。

我的建议是不要担心最后的“Press...”。这只是 VS 向您伸出援助之手,不会在您发布/安装/使用最终应用时发生。

【讨论】:

  • 具体做什么?原因是什么?
  • 为什么释放模式下 Ctrl + F5 会导致 exit() 要求按下某个键?
  • 调试模式下也会出现这种情况。
  • 不要迂腐,但 exit() 并不要求按下一个键。在要求您按下某个键之前,该 exe 已退出。为什么在没有调试的情况下运行控制台应用程序要求按下一个键?因此,您可以在其运行的控制台消失之前读取任何输出。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多