clang 是 macos 默认编译器,/usr/bin/gcc 实为 clang 符号链接;需用 clang -v -e -x c++ - &1 | grep "^\s*#include" 获取真实 includepath 并配置于 c_cpp_properties.json;tasks.json 中 command 应为 /usr/bin/clang,args 含 "-g"、"${file}" 等;code runner 需启用 run in terminal 支持 stdin。

Clang 是 macOS 默认编译器,别折腾 gcc
macOS 自带 clang,不是 gcc。虽然名字里带 “gcc”,但 /usr/bin/gcc 实际是 clang 的符号链接——强行配成 gcc 路径反而会导致 IntelliSense 报错或调试失败。
- 终端运行
clang --version确认存在(13.0+ 版本已足够) - 若提示 command not found,先运行
xcode-select --install安装命令行工具(不是完整 Xcode) - 不要去 brew install gcc 来“替换”系统编译器——除非你明确需要多版本 GCC 切换,否则纯属增加路径混乱风险
c_cpp_properties.json 配置不靠猜,靠 clang -v -E -x c++ -
VS Code 的 IntelliSense 找不到 stdio.h、标红 #include、跳转失效……90% 是 includePath 没对。手动填路径容易错(比如写成 /Applications/Xcode.app/... 却没装完整 Xcode),最稳的方式是让 clang 自己报出来:
- 在终端进入任意目录,执行:
clang -v -E -x c++ - &1 | grep "^\s*#include" - 输出里类似
#include "..." search starts here:下面的路径,就是你要塞进includePath的真实路径(通常是/Library/Developer/CommandLineTools/usr/include/c++/v1和/usr/include等) - 配置位置:Cmd+Shift+P →
C/C++: Edit Configurations (UI)→ 在 “Include path” 栏粘贴上述路径,逗号分隔
按 Cmd+Option+B 编译失败?检查 tasks.json 的 command 和 args
快捷键 Cmd+Option+B 触发的是构建任务(build task),它依赖 .vscode/tasks.json。默认生成的 task 可能用错命令或漏参数,导致编译静默失败或报 ld: library not found。
- 确保
command是/usr/bin/clang(不是gcc或空路径) -
args至少包含:"-g"(调试信息)、"${file}"(源文件)、"-o"(输出)、"${fileDirname}/${fileBasenameNoExtension}"(可执行名) - 如果用了
scanf或需要交互输入,必须加"-fansi-escape-codes"(否则终端颜色和输入可能异常) - 别信某些教程里写的
"${fileDirname}/a.out"—— 同目录下多个 .c 文件会互相覆盖,用${fileBasenameNoExtension}更安全
Code Runner 插件能一键运行,但 stdin 输入要开终端
装了 Code Runner 后右键 → “Run Code” 很方便,但它默认在 Output 面板运行——这意味着 scanf、getchar 会卡住,因为 Output 面板不支持标准输入。
立即学习“C语言免费学习笔记(深入)”;
- 必须打开插件设置,勾选
Run in Terminal(设置路径为extensions.code-runner→ 找到该项并启用) - 同时建议勾选
Save file before run,避免改了代码却运行旧版本 - 注意:Code Runner 的编译命令是硬编码的,它不会读
tasks.json或c_cpp_properties.json,所以 IntelliSense 正常 ≠ Code Runner 能跑通——两者配置要各自确认
真正麻烦的不是配不配得上,而是配完之后改了 Xcode 命令行工具版本、升级了 macOS、或者换了 Apple Silicon 机器,compilerPath 和 includePath 就可能突然失效。每次系统级开发工具变动后,第一件事不是重写代码,是重新跑一遍 clang -v -E 和检查 tasks.json。











