核心结论就是 C 语言没有唯一固定必须使用的编译器,日常开发可以根据操作系统开发场景和个人习惯挑选,Windows 平台最常用的是 MinGW 配套的 gcc 还有 Visual Studio 自带的 MSVC 编译器,Linux 系统原生默认就是 gcc,macOS 一般使用 clang 也就是苹果基于 LLVM 开发的 C 语言编译器。之所以有这么多可选编译器,是因为 C 语言本身只是一套标准规范,不同厂商和开源项目按照 C 标准实现对应的翻译程序,把人写的 C 源码转换成机器可以执行的二进制程序,不同编译器在编译速度代码优化能力错误提示兼容性上都有差别,学生入门课程项目工业级大型项目嵌入式开发,适合的编译器并不一样,选错编译器很容易出现代码在本机可以编译运行,换别的环境就报错的情况。
一 主流编译器详细介绍
gcc
gcc 全称 GNU 编译器集合,是开源跨平台编译器,也是现在使用范围最广的 C 编译器,原生支持 C89 C99 C11 C17 等多个 C 标准,优点是编译稳定,优化选项丰富,命令行操作成熟,大量开源项目教程教材默认都是基于 gcc。Linux 系统预装 gcc,Windows 下需要安装 MinGW 或者 MSYS2 来部署 gcc 环境,缺点是 Windows 原生没有自带,初次配置环境变量对新手有一点门槛,报错提示阅读起来不算友好。
MSVC
MSVC 是微软 Visual Studio 里面内置的 C C++ 编译器,全称 Microsoft Visual C++ Compiler,Windows 平台工业开发首选,深度适配 Windows 系统 API,编译出来的程序和 Windows 系统兼容性很好,集成在 Visual StudioIDE 里面,不需要单独敲命令,图形化界面调试非常方便。缺点是跨平台能力弱,默认标准支持更新偏慢,很多开源 Linux 项目直接用 MSVC 编译会出现语法兼容报错,而且 Visual Studio 安装包体积很大。
clang
clang 是 LLVM 项目下的 C 语言前端编译器,macOS 系统默认自带,优点是编译速度快,报错信息清晰友好,代码静态检查能力强,很多代码编辑器插件都基于 clang 做语法提示。它同样跨平台,Windows 和 Linux 也可以安装,缺点是部分老旧项目依赖 gcc 特有扩展语法,切换 clang 之后会编译失败。
其他小众编译器
TCC 也就是 Tiny C Compiler,体积极小启动很快,适合轻量测试小程序,但是优化能力弱,不适合大型正式项目。Keil C51 这类属于专用编译器,只针对 51 单片机嵌入式开发,不是通用 PC 端 C 语言编译器,不能用来编译普通电脑上运行的 C 程序。
二 按场景选择对照表
| 使用场景 | 推荐编译器 | 配套环境 |
|---|---|---|
| 大学 C 语言课程入门 | gcc | DevC++ 或者 VS Code 加 MinGW |
| Windows 大型软件开发 | MSVC | Visual Studio |
| Linux 开发服务器程序 | gcc | 终端直接调用 |
| macOS 开发 | clang | Xcode 或者终端 |
| 嵌入式单片机开发 | 厂商专用 C 编译器 | Keil IAR 等 |
三 基础使用步骤
第一步确认操作系统,Windows 用户如果选 gcc,下载 MSYS2,安装之后通过包管理器安装 gcc 组件,把 bin 目录添加到系统环境变量,打开 cmd 输入 gcc v,能打印版本号就代表安装成功。如果选择 MSVC,直接下载 Visual Studio 安装器,勾选使用 C++ 的桌面开发组件,安装完成之后打开开发者命令提示符,输入 cl v 验证。macOS 用户打开终端输入 clang v,没有安装就执行 xcode select install 命令自动安装命令行工具。第二步新建后缀为 c 的源码文件,写入 C 代码。第三步执行编译命令,gcc 的命令格式是 gcc 源码文件 c o 输出程序名,回车完成编译,之后运行生成的可执行文件。第四步如果编译报错,根据编译器给出的错误行号修改源码,重新编译测试。
四 关键注意事项
C 语言不同编译器对标准的实现存在细微差异,有些编译器支持非标准扩展语法,代码如果大量使用扩展语法,移植到别的编译器就会出错。学习阶段建议优先统一使用 gcc,因为国内绝大多数教材网课实验题库都是 gcc 环境,考试上机也大多是 gcc,减少环境带来的报错干扰。如果是做 Windows 原生应用开发,再切换 MSVC,做苹果平台开发就使用 clang。不要混淆 IDE 和编译器,DevC++ VS Code Visual Studio 这些只是代码编辑调试的集成开发工具,本身不是编译器,只是调用后台的 gcc 或者 MSVC 完成编译工作,很多新手容易把 IDE 当成编译器。
问题 1 c 语言编译器 gcc 和 MSVC 能不能同时装在一台电脑
回答 1 可以同时安装 c 语言编译器 gcc 和 MSVC,两个编译器互相独立,不会冲突,只需要注意调用的时候区分命令,gcc 使用 gcc 命令,MSVC 使用 cl 命令,切换开发项目的时候按需调用对应的 c 语言编译器即可。
问题 2 学习 c 语言编译器一定要用命令行吗
回答 2 学习 c 语言编译器不强制使用命令行,集成开发环境可以图形化点击编译按钮,底层依旧是调用 c 语言编译器完成编译,但是掌握命令行编译是基础能力,方便理解编译原理,后续做脚本自动化编译也会用到。
问题 3 c 语言编译器编译报错是不是代码一定写错了
回答 3 不一定,c 语言编译器报错除了代码本身语法错误,也有可能是 c 语言编译器版本过低不支持新 C 标准,或者代码使用了别的 c 语言编译器专属扩展语法,在当前编译器环境无法识别,需要调整编译标准参数或者修改兼容写法。
本文内容仅作为 C 语言编译器相关技术学习参考,软件版本持续更新,安装步骤和编译参数可能随官方版本迭代发生变化,实际操作请以对应编译器官方文档为准,本文不对因为按照本文操作产生的环境异常编译失败等问题承担相关责任。


