如何阻止C++编译生成的exe程序运行结束后自动关闭?
解决EXE运行后立即关闭无法查看输出的问题
嘿,这个问题我太熟了!很多刚接触本地编译运行的朋友都会碰到这个情况——编译器里跑能看到输出,单独双击exe就闪一下没了,根本来不及看结果。下面给你几个实用的解决办法,随便挑一个都能搞定:
方法1:在代码末尾添加暂停逻辑
这是最直接的方式,让程序运行到最后时主动等待用户输入,不会立刻退出。
- C/C++ 方案:
- 可以用Windows专属的系统暂停命令:
#include <stdlib.h> // C语言头文件 // 或者 #include <cstdlib> // C++语言头文件 int main() { // 你的程序逻辑 printf("Hello World!\n"); system("pause"); // 执行后会显示"请按任意键继续..." return 0; } - 更通用的跨平台等待输入方式(避免系统依赖):
C++里可以用#include <stdio.h> int main() { printf("Hello World!\n"); // 先吃掉之前输入残留的换行符(如果程序里有输入操作的话) getchar(); // 等待用户按下任意键再退出 getchar(); return 0; }cin.get()替代,同样要注意处理输入缓冲区的换行残留问题。
- 可以用Windows专属的系统暂停命令:
方法2:从命令提示符(CMD)手动运行EXE
这个方法不需要修改代码,适合不想改动程序的情况:
- 按下
Win + R,输入cmd回车打开命令提示符; - 用
cd命令切换到你的EXE文件所在的文件夹,比如:cd C:\MyProjects\Demo\Release - 输入EXE的文件名(比如
Demo.exe)回车运行,程序结束后窗口会保持打开,你可以随时查看输出内容。
方法3:用批处理文件(.bat)运行EXE
创建一个批处理文件,把运行EXE和暂停命令绑定在一起,双击批处理就能自动执行:
- 在EXE所在文件夹新建一个文本文件,打开后输入:
@echo off Demo.exe // 替换成你的EXE文件名 pause - 保存文件,把后缀名从
.txt改成.bat; - 双击这个bat文件,程序运行结束后会自动暂停,显示"请按任意键继续..."。
方法4:修改编译器的运行配置(仅IDE内运行生效)
如果你主要在编译器里调试,偶尔才单独运行EXE,有些IDE可以设置运行后自动暂停:
- 比如Code::Blocks:点击顶部菜单栏的
设置->编译器->全局编译器设置->程序调试器,勾选运行后暂停选项; - 比如Visual Studio:默认在调试模式下运行时会自动暂停,但单独双击EXE还是会关闭,所以这个方法只能覆盖IDE内运行的场景。
内容的提问来源于stack exchange,提问作者Dorbek




