code runner 仅调用系统已有编译器或解释器,本身不提供任何运行时环境;需确保 g++/gcc/python3 等命令可在终端直接执行,并正确配置 executormap、启用 run in terminal 及 code-runner.clearpreviousoutput。

Code Runner 不是编译器,它只是调用系统里已有的编译器或解释器。如果你点“运行”后弹出 command not found 或 g++: command not found,问题一定出在底层工具链没装好,而不是 Code Runner 本身坏了。
确认 g++ / gcc / python3 等命令能否在终端直接执行
这是最常被跳过的一步——很多人以为装了 Code Runner 就等于装好了 C++ 环境。其实它完全不带任何语言运行时。
- 打开 VS Code 内置终端(
Ctrl+`),输入g++ --version;若报错,说明 MinGW-w64 或 GCC 没装,或没加进PATH - macOS 用户注意:
gcc命令实际是 Clang,要运行 C++ 代码必须用g++,且需通过brew install gcc安装真正的 GNU 版本 - Windows 上路径含中文或空格(如
C:\Program Files\mingw64)会导致 Code Runner 启动失败,必须改用纯英文无空格路径,例如D:\mingw64 - 验证 Python:运行
python3 --version,不是python—— macOS 和新版 Linux 默认没有python命令别名
修改 code-runner.executorMap 适配真实环境
默认配置假设所有系统都用 python、gcc 这些短名,但现实里名字五花八门。不改就必然失败。
- Python 脚本运行报错?把 settings.json 里的
"python": "python -u"改成"python": "python3 -u" - C 文件运行失败?别用默认的
gcc,换成完整路径或更健壮的写法:"c": "cd $dir && gcc -std=gnu17 $fileName -o $fileNameWithoutExt && ./$fileNameWithoutExt" - C++ 同理,
g++要显式指定标准和输出名:"cpp": "cd $dir && g++ -std=c++17 -g $fileName -o $fileNameWithoutExt.exe && ./$fileNameWithoutExt.exe"(Windows 加.exe后缀是必须的) - 所有命令中
$dir末尾不带斜杠,$fileNameWithoutExt不含扩展名,这些变量大小写和拼写不能错,否则替换为空导致命令语法错误
运行时黑窗一闪而过?必须加 Run in Terminal
Code Runner 默认用非交互式 shell 执行,C/C++ 程序一跑完就退出,根本看不到输出。这不是 bug,是设计如此。
- 在设置里搜
Run in Terminal,勾选它——这样命令会在 VS Code 底部集成终端中运行,保持窗口打开 - 顺手勾上
code-runner.clearPreviousOutput,避免旧输出干扰判断 - 如果程序需要用户输入(比如
scanf或cin),不勾这个选项,终端会直接关闭,输不了内容 - 某些安全软件(如 macOS 的 Shell Command Guard)会拦截 Code Runner 启动子进程,此时即使配置全对也会静默失败,可临时禁用这类插件验证
项目级覆盖:用 .code-runner.json 替代全局配置
一个团队、一个项目可能要用特定编译参数(比如 -I./include 或 -lglfw),全局 settings.json 改来改去容易冲突。
- 在项目根目录新建文件
.code-runner.json,内容只需包含executorMap字段 - 例如为 OpenGL 项目定制:
{"executorMap": {"cpp": "cd $dir && g++ -std=c++17 -I./include $fileName -lglfw -o $fileNameWithoutExt && ./$fileNameWithoutExt"}} - VS Code 会自动优先读取该文件,无需重启;但文件名必须是
.code-runner.json,少个点或大小写错都不生效 - 注意 JSON 语法严格:末尾不能有多余逗号,字符串必须双引号,布尔值不能加引号
最容易被忽略的是:Code Runner 从不处理头文件路径、IntelliSense 补全或调试断点——它只管“跑”。如果你看到 #include <stdio.h></stdio.h> 报红线,那是 C/C++ 插件的事,跟 Code Runner 无关。别试图用它解决编译错误,它连预处理都不参与。











