能用 gcc --version 在终端里跑出版本号,才是构建系统能工作的前提;否则所有 .sublime-build 配置都是空转。确认 gcc 已就绪且在 PATH 中,Sublime Text 不带编译器,只负责把 ${file} 传给系统里的 gcc。

能用 gcc --version 在终端里跑出版本号,才是构建系统能工作的前提;否则所有 .sublime-build 配置都是空转。
确认 gcc 已就绪且在 PATH 中
Sublime Text 不带编译器,只负责把 ${file} 传给系统里的 gcc。如果终端输 gcc --version 报“不是内部或外部命令”,说明:
- Windows 用户没勾选 MinGW-w64 安装时的 “Add to PATH”,或手动加路径后没重启 CMD 和 Sublime Text
- 路径含中文、空格或括号(如
C:\Program Files\mingw64\bin),导致 shell 找不到gcc - macOS 用户没装 Command Line Tools,
xcode-select --install没运行过 - Ubuntu/Debian 用户只装了
gcc,但漏了build-essential
创建 C.sublime-build 文件的关键字段
打开 Sublime → Tools → Build System → New Build System…,粘贴以下内容(注意是纯 JSON,不能有注释或多余空格):
{
"shell_cmd": "gcc -Wall -std=c17 \"${file}\" -o \"${file_path}/${file_base_name}\"",
"file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$",
"working_dir": "${file_path}",
"selector": "source.c"
}关键点:
立即学习“C语言免费学习笔记(深入)”;
-
-std=c17显式指定标准,避免默认用 C89 导致行为异常 - 所有路径变量都加双引号,防空格路径崩掉
-
selector必须是source.c,否则新建.c文件不会自动关联该构建系统 - 别写
"shell": true——shell_cmd默认走 shell,加了反而可能干扰参数解析
想运行带 scanf 的程序?别依赖输出面板
Sublime 的输出面板是只读流,不支持 stdin 输入。按 Ctrl+B 编译完再按 Ctrl+Shift+B 选 Run,如果 Run 是直接执行可执行文件,窗口会闪退,你也输不了东西。
解决办法是调用系统终端:
- Windows:用
cmd /c start cmd /k开新窗口,Run 变体可写成:"shell_cmd": "gcc -Wall -std=c17 \"${file}\" -o \"${file_path}/${file_base_name}.exe\" && start cmd /k \"${file_path}/${file_base_name}.exe\"" - macOS:用
open -a Terminal.app,配合bash -c启动 - Linux:用
gnome-terminal -- bash -c或konsole -e
另外,简单测试时可在代码末尾加 getchar() 或 system("pause")(仅 Windows)防闪退,但只是临时手段。
保存位置和命名必须严格匹配
文件必须保存在 Sublime 的 User 包目录下,命名为 C.sublime-build(不能是 C_Custom.sublime-build 或其他名字)。
路径示例:
- Windows:
%APPDATA%\Sublime Text\Packages\User\C.sublime-build - macOS:
~/Library/Application Support/Sublime Text/Packages/User/C.sublime-build - Linux:
~/.config/sublime-text/Packages/User/C.sublime-build
保存后,需手动在 Tools → Build System 中选中 C,否则新建 .c 文件也不会自动生效。很多问题其实卡在这一步 —— 文件名对了、内容对了,但构建系统没手动启用。

















