notepad++运行c++程序秒退的根本原因是cmd默认用/c模式执行完即关闭,需改用/k模式并添加&pause&exit;同时代码中system("pause")须置于return前且包含头文件,二者缺一不可。

Notepad++ 直接运行 C++ 生成的 .exe 会秒退,根本不是程序问题,而是 cmd 环境默认行为 —— 执行完就关窗。加 system("pause") 是常见解法,但只在代码里加还不够,得配合 Notepad++ 的运行命令一起改。
Notepad++ 运行命令里必须带 PAUSE
很多人只在 C++ 代码末尾加了 system("pause"),结果还是闪退。原因很简单:Notepad++ 默认用的是 cmd /c 模式(执行完立即退出),压根没给 system("pause") 执行的机会。
正确做法是把运行命令改成支持“保持窗口打开”的模式:
cmd /k pushd "$(CURRENT_DIRECTORY)" && g++ -o "$(NAME_PART).exe" "$(FULL_CURRENT_PATH)" && "$(NAME_PART)".exe & PAUSE & EXIT-
/k表示执行完命令后不关闭 cmd 窗口 -
& PAUSE & EXIT是独立于程序本身的暂停指令,哪怕你的 C++ 代码崩溃或没走到system("pause"),也能卡住窗口 - 注意:两个
&之间不能有空格,否则 cmd 解析失败
system("pause") 在代码里加的位置很关键
它必须出现在 return 之前,且不能被提前 exit() 或异常中断绕过。否则即使命令行没关,程序自己先退出了,system("pause") 根本不执行。
典型错误写法:
#include <iostream>
int main() {
std::cout
<p>正确顺序:</p>
<pre class="brush:php;toolbar:false;">#include <iostream>
#include <cstdlib> // 必须包含,否则编译报错:'system' was not declared in this scope
int main() {
std::cout
<ul>
<li>缺 <code>#include <cstdlib></cstdlib></code> 会导致编译失败(不是所有编译器都自动拉入)</li>
<li>Windows 下 <code>system("pause")</code> 显示的是英文提示;Linux/macOS 不支持 <code>pause</code> 命令,会直接报错或静默失败</li>
<li>如果用了 MinGW-w64 或 WSL,建议改用 <code>std::cin.get()</code> 更跨平台</li>
</ul>
<h3>替代方案:<code>std::cin.get()</code> 更可靠但要注意输入残留</h3>
<p>比起依赖系统命令,<code>std::cin.get()</code> 是纯 C++ 方案,不调外部进程,启动快、无兼容性问题,适合调试时快速加一行暂停。</p>
<p>但它有个坑:如果前面有 <code>std::cin >> xxx</code> 读数,缓冲区里可能还剩一个换行符,导致 <code>std::cin.get()</code> 立刻返回,窗口照样秒退。</p>
<ul>
<li>安全写法是先清空缓冲区:<code>std::cin.ignore(std::numeric_limits<:streamsize>::max(), '\n');</:streamsize></code> 再 <code>std::cin.get();</code>
</li>
<li>或者统一用 <code>std::getline(std::cin, str)</code> 配合提示语,用户看得明白</li>
<li>VS 或 Code::Blocks 等 IDE 调试时,其实根本不需要手动暂停 —— 直接按 <code>Ctrl+F5</code>(开始执行,不调试)就能保窗</li>
</ul>
<p>真正容易被忽略的点是:Notepad++ 的运行命令和代码里的暂停逻辑是两层机制,得同时配对生效。单独改哪一边都可能白忙活 —— 尤其是新手常以为“加了 <code>system("pause")</code> 就万事大吉”,结果发现连提示都没出现,其实是 cmd 窗口早关了。</p></cstdlib></iostream>C++免费学习笔记(深入):立即使用
在学习笔记中,你将探索 C++ 的入门与实战技巧!











