在 notepad++ 中用 mingw 运行 c++ 程序需配置系统 path 指向 mingw\bin、安装 nppexec 插件并保存含 cd、g++ -mconsole -std=c++17、chcp 65001 等指令的脚本,绑定 f5 快捷键,同时确保源文件为 utf-8 编码且已保存。

怎么在 Notepad++ 里直接运行 C++ 程序(用 MinGW)
Notepad++ 本身不编译代码,但能通过「运行」菜单调用外部命令执行编译+运行。关键不是“配置 Notepad++”,而是让 g++.exe 可被它找到,并写对命令行参数。路径没加对、空格没转义、工作目录不对——这三处出错,Run 就直接报“系统找不到指定的文件”或“不是内部或外部命令”。
- 确保 MinGW 的
bin目录(如C:\MinGW\bin)已添加到系统PATH环境变量,然后重启 Notepad++(否则它读不到新 PATH) - 不要用带空格的路径装 MinGW(比如
C:\Program Files\MinGW),否则命令行里得加引号,容易漏写或错位 - Notepad++ 的「当前工作目录」默认是文件所在目录,但
g++编译时依赖相对路径(如#include "xxx.h"),所以保存文件再运行,别直接运行未保存的临时缓冲区
设置 F5 快捷键一键编译并运行(NppExec 插件方式)
原生 Notepad++ 的「运行 → 运行」只能执行单条命令,没法串起「编译 → 判断成功 → 运行」。必须用 NppExec 插件(自带在新版 Notepad++ 中,若没有请从插件管理器安装)。它支持脚本逻辑和变量,是真正可用的方案。
- 打开
Plugins → NppExec → Execute...,粘贴以下脚本:
cd $(CURRENT_DIRECTORY)
g++ -std=c++17 -o "$(NAME_PART).exe" "$(FULL_CURRENT_PATH)"
if $(EXITCODE) == 0
cmd /c "$(NAME_PART).exe"
endif
- 点
Save...命名为run_cpp,再点OK - 进
Plugins → NppExec → Advanced Options → Menu items,把刚存的run_cpp拖到左栏,勾选Place on the Macros submenu - 最后进
Settings → Shortcut Mapper → Plugin commands,找到run_cpp,设为F5(会覆盖原生 F5,但更实用)
为什么 g++ 报 “undefined reference to `WinMain'”
这是 Windows 下最常卡住新手的链接错误。根本原因:MinGW 默认按 GUI 子系统链接,但你的 main() 是控制台入口。它不怪 Notepad++,也不怪代码,只怪 g++ 没加 -mconsole 或用了错误的启动库。
- 在 NppExec 脚本里,把编译命令改成:
g++ -mconsole -std=c++17 -o "$(NAME_PART).exe" "$(FULL_CURRENT_PATH)" - 如果用了
#include <windows.h></windows.h>却没写WinMain,也得加-mconsole强制走控制台模式 - 不用
-mwindows,除非你真在写无黑框的 GUI 程序(且实现了WinMain)
中文路径或输出乱码怎么办
Notepad++ 默认用系统 ANSI 编码(如 GBK)保存文件,而 MinGW 的 g++ 默认按 UTF-8 解析源码。两者不一致,就会出现「源文件有中文注释 → 编译报错」或「cout 输出问号」。
- 在 Notepad++ 中,把文件编码转成 UTF-8:菜单
编码 → 转为 UTF-8 编码(注意不是 UTF-8-BOM) - 编译时显式指定输入编码:
g++ -finput-charset=UTF-8 -mconsole ... - 终端输出仍是乱码?那是 cmd 默认用 GBK。可在 NppExec 脚本末尾加一行:
chcp 65001(切换 CMD 为 UTF-8),再运行程序
-mconsole 不能漏、源码编码和编译器预期要一致——少一个,F5 按下去就静音。C++免费学习笔记(深入):立即使用
在学习笔记中,你将探索 C++ 的入门与实战技巧!











