编译器
编译器(Compiler)是一种特殊的计算机程序,它的主要作用是将程序员使用高级编程语言(如C、C++、Java等)编写的源代码(source code)翻译成计算机硬件(CPU)能够直接理解和执行的低级机器语言(通常是二进制机器码)。
为什么需要编译器?
人类编写代码时,使用高级语言更方便阅读、编写和维护(比如用if、for等关键字)尤其是实现大型复杂项目,高级语言能够更加方便管理。但计算机的处理器(CPU)只认识二进制指令(0和1)。编译器就像一个“翻译器”,将人类友好的代码(高级语言)转换成机器能执行的指令。
编译器的工作流程
一个典型的现代编译器通常包括以下几个阶段(从源代码到可执行程序):
- 预处理(Preprocessing):处理源代码中的指令(如#include、#define),展开宏、包含头文件等。
- 词法分析(Lexical Analysis):将源代码分解成一个个“词法单元”(tokens),如关键字、标识符、运算符。
- 语法分析(Syntax Analysis):检查代码是否符合语言的语法规则,构建抽象语法树(AST)。
- 语义分析(Semantic Analysis):检查类型匹配、变量声明等逻辑错误。
- 中间代码生成(Intermediate Code Generation):生成一种中间表示形式,便于优化。
- 代码优化(Optimization):改进代码,使其运行更快、更省资源。
- 目标代码生成(Code Generation):生成汇编代码或直接机器码。
- 链接(Linking):将多个目标文件和库组合成最终的可执行文件。
整个过程是一次性完成的:编译成功后生成可执行程序,以后运行时无需再编译(执行速度快)。
与解释器的区别
- 编译器:提前全部翻译成机器码,运行快,但编译时间长,出错时需重新编译(如C/C++的GCC、Clang)。
- 解释器:逐行翻译并执行,灵活,便于调试,但运行慢(如Python的解释器)。
常见编译器
- GCC(GNU Compiler Collection):用于C/C++。
- Javac:Java编译器,将.java编译成字节码(.class),再由JVM执行。
- Clang:现代高效的C/C++编译器。
编辑器
编辑器(Editor)在计算机领域,通常指用于创建、查看和修改文本文件的软件工具。特别是在编程上下文中,它常被称为代码编辑器(Code Editor)或文本编辑器(Text Editor),是编写源代码的核心工具,是我们存放代码的“文档”。
为什么需要编辑器?
程序员需要一个方便的界面来输入和编辑代码。专业的编辑器可以提供语法高亮、自动补全、搜索替换等,提高效率。
代码编辑器的核心功能
- 语法高亮:不同语言的关键字、变量、字符串等用不同颜色显示,便于阅读。
- 自动补全:输入时智能提示代码(如函数名、变量)。
- 代码折叠:隐藏或展开代码块,管理大型文件。
- 搜索与替换:快速查找和修改代码。
- 插件/扩展支持:许多编辑器可以安装主题、语言支持、调试工具等。
- 多光标编辑:同时编辑多个位置,提高效率。
代码编辑器推荐
- Visual Studio Code (VS Code):微软开发,免费、开源、扩展丰富,支持几乎所有语言。适合初学者和专业开发者。
- Sublime Text:速度快、界面简洁,支持多光标编辑。
- Vim/Neovim:终端-based,轻量、高度可自定义,键盘操作高效(有学习曲线)。
- AI辅助代码编辑器: 随着 AI 代码生成能力的快速提升,加上 VS Code 的开放生态,各类基于 AI 的代码编辑器迅速涌现。我们既可以选择集成了 AI Agent 能力的新型编辑器(如 Cursor、Windsurf、Trae),也可以使用 VS Code 并通过 Copilot 等插件获得 AI 辅助开发体验。这些IDE的使用逻辑差别不大,但理念有所差异,不再详细赘述。但是使用好这些工具的前提是已经具备了良好的代码能力或产品逻辑。
解释器
解释器(Interpreter)是一种逐行读取、分析并执行代码的程序。它不需要像编译器那样把整个程序先转换成机器码再运行,而是边读边执行。
C语言是编译型语言,不会使用到解释器,但在这里一并对比讲解。如果我们在学习python时会遇到加载包如Numpy、pandas等,这些包都是C语言编写,经过编译后的文件。
为什么需要解释器?
- 适合交互式编程和脚本语言。
- 便于快速开发和调试:修改代码后立即运行,无需等待编译过程。
- 跨平台性强:只要有对应的解释器,代码就可以在不同系统上运行(如Python)。
解释器的工作流程
- 读取源代码:一行或一段代码。
- 词法/语法分析:将代码分解成tokens并检查语法。
- 直接执行:立即运行对应的操作(调用函数、计算表达式等)。
- 继续下一行:重复上述过程,直到代码结束或出错。
整个过程是运行时逐步进行的,每次运行都需要解释器参与。
与编译器的对比
| 特性 | 解释器(Interpreter) | 编译器(Compiler) |
|---|---|---|
| 执行方式 | 逐行解释并执行 | 提前全部翻译成机器码 |
| 执行速度 | 较慢(每次运行都要解释) | 较快(直接运行机器码) |
| 编译时间 | 无需提前编译 | 需要编译时间 |
| 调试便利性 | 容易(出错立即定位到具体行) | 较复杂(需重新编译) |
| 典型语言 | Python、JavaScript、Ruby、PHP | C、C++、Rust、Go |
| 跨平台 | 依赖解释器(写一次,到处运行) | 需针对不同平台重新编译 |
常见解释器例子
- 编程语言解释器:例如 Python、Ruby、JavaScript 的运行方式。
- 命令行解释器(Shell):如 Bash、Zsh、PowerShell。
- 虚拟机解释器:如 Java 的 JVM、.NET 的 CLR。
- 领域特定语言解释器:例如正则表达式引擎、SQL 执行器。
总结
- 编译器:适合追求性能的系统级程序(如操作系统、游戏引擎)。
- 解释器:适合快速开发、脚本、Web后端(如Python、JS)。
开发环境搭建
Visual Studio 2026(Windows系统推荐,一站式集成环境)
Visual Studio(简称 VS)是微软公司开发的一款强大集成开发环境(IDE),用于构建各种类型的应用程序,包括桌面程序、网站、Web 服务、移动应用和云服务。它支持多种编程语言,如 C#、C++、Visual Basic、Python、F# 等,并提供从代码编写、调试、测试到部署的全生命周期工具。适用于从个人开发者、小团队到大型企业。Visual Studio 2026 是微软推出的最新版本集成开发环境(IDE)。
下载安装
访问官网:https://visualstudio.microsoft.com/zh-hans/
下载:Visual Studio Community(社区版,免费)
运行安装程序
创建第一个C语言项目
- 打开Visual Studio
- 点击 “创建新项目”
- 选择 “空项目” → 下一步
- 输入项目名称 → 点击 “创建”
- 在右侧解决方案资源管理器中,右键点击 “源文件”
- 选择 “添加” → “新建项”
- 选择 “C++文件(.cpp)”,将文件名改为 .c(例如 test.c 或 hello.c)。
- 编写代码并按 Ctrl + F5 运行
#include <stdio.h>
int main() {
printf("Hello, World!\n");
return 0;
}
常用快捷键
Ctrl + F5:运行程序
F5:调试运行
F9:设置断点
F10:单步跳过
F11:单步进入
Visual Studio 2026 项目创建步骤图例
1. 打开Visual Studio 2026

2. 新建项目

3. 选择空项目

4. 选择项目位置

- 根据需求填写项目名称
- 选择合适的项目位置
- 创建项目
5. 进入主界面
- 在源文件下创建C语言的源文件

- C语言需要将XXX.cpp改成XXX.c

创建第一个C语言代码文件


- 通过Ctrl+F5或者鼠标点击Debugging按钮进行编译,VS会自动编译并在控制台显示结果。
至此就可以开始C语言的学习和代码练习。通过我们上节课的编译器的原理课程,通过VS Code也可以实现自动编译,但是对于初学者并不友好。配置过程稍显复杂,因此后面的学习推荐使用VS 2026进行。
VS Code (MacOS、Linux系统)
Visual Studio没有相应的MscOS和Linux的版本,我们可以使用微软的另一个免费产品Visual Studio Code(简称VS Code)来进行C语言的编辑,通过插件来进行编译,达到和Visual Studio相似的效果。注意Visual Studio Code只是轻量级代码编辑器(相当于一个高级的代码记事本软件),需要配合编译器使用。
下载安装
访问官网:https://code.visualstudio.com/
下载并安装
编译器安装
VS Code 不自带编译器,需要手动安装 MinGW-w64 或 LLVM。
Windows 用户:
如果已经安装了 Visual Studio,则VS Code 可以直接利用 VS 的编译器。
如果未安装 Visual Studio,需下载 MinGW-w64,解压后,将其 bin 文件夹的路径(例如 C:\mingw64\bin)添加到系统的 环境变量 (Path) 中。操作方法如下:
- 右键 “此电脑” → “属性” → “高级系统设置”
- 点击 “环境变量”
- 在 “Path” 中添加:C:\mingw64\bin
验证: 打开命令提示符(cmd),输入 gcc -v,显示版本信息,说明编译器安装成功。
macOS 用户:
直接打开终端,输入 xcode-select --install,系统会自动安装 Clang 编译器。
Linux 用户:
通常自带 GCC。如果没有,通过终端运行 sudo apt install build-essential 即可。
安装VS Code扩展插件
CodeLLDB调试器扩展

提供原生代码调试功能:设置断点、单步执行、查看变量、栈帧、表达式求值等。支持 C++、Rust 等编译型语言的调试,特别是内置了对标准库(如 vector、string)的可视化显示。支持多种架构(x86、ARM、AArch64 等),甚至远程调试和嵌入式开发。
clangd 语言服务器扩展

提供智能代码补全(IntelliSense)、语法高亮、错误诊断(红波浪线提示编译错误)。
支持代码导航:如跳转到定义(Go to Definition)、查找引用(Find References)、悬停提示(Hover 显示类型/文档)。代码格式化、重构建议、自动添加 #include 等。
插件自动配置方案
我们知道,C 语言是一种编译型语言,源代码必须先通过编译器(如 clang、gcc 或 MSVC)编译为平台对应的二进制可执行文件,才能被操作系统执行并输出结果。
VisualStudio 2026 已经内置并集成了完整的 C/C++ 编译与调试工具链(如 MSVC),因此用户可以在默认配置下直接编译和运行 C 程序。
VS Code 本身只是一个轻量级代码编辑器,并不包含编译器。通过配置 setting.json, tasks.json 和 launch.json 等 JSON 文件,可以告诉 VS Code 如何调用外部编译器和调试器,从而实现 C 程序的自动编译与调试流程。(jaosn文件放置在项目文件夹下的 .vscode文件夹内)
在 macOS 环境下,VS Code 通常需要先调用系统提供的 clang 编译器,将 .c 文件编译为可执行文件(如 a.out),然后再运行或调试该程序。
| 工具 | 作用 | 命令 |
|---|---|---|
| clang | 编译 | clang main.c -o a.out |
| lldb | 调试 | lldb ./a.out |
| clangd | 智能补全 | ❌ 不能单独交互使用 |
settings.json(告诉 VS Code 使用 clangd)
{
"clangd.path": "clangd",
"clangd.arguments": [
"--header-insertion=never",
"--completion-style=detailed",
"--background-index"
],
"editor.formatOnSave": true,
"files.associations": {
"*.h": "c"
},
"codeLLDB.showDisassembly": "auto"
}
tasks.json(使用 Clang 自动编译)
下面的任务会自动:
编译当前 C 文件为可执行文件 ./a.out
自动使用 clang(你系统自带)
{
"version": "2.0.0",
"tasks": [
{
"label": "clang build",
"type": "shell",
"command": "clang",
"args": [
"-g",
"${file}",
"-o",
"${fileDirname}/a.out"
],
"group": {
"kind": "build",
"isDefault": true
},
"problemMatcher": []
}
]
}
launch.json(使用 CodeLLDB 调试 Clang 编译的程序)
调试时 VS Code 会自动:
- 先调用 clang 编译
- 再启动 CodeLLDB
- 支持断点、变量、调用栈、watch 等
{
"version": "0.2.0",
"configurations": [
{
"name": "Debug with CodeLLDB",
"type": "lldb",
"request": "launch",
"program": "${fileDirname}/a.out",
"cwd": "${workspaceFolder}",
"preLaunchTask": "clang build",
"args": []
}
]
}
调试方式(断点调试)
按:
F5 或左侧 Run → “Debug with CodeLLDB”
可以:
- 设置断点
- 查看变量
- 看调用栈
- 逐行执行(F10/F11)
注:本文是本账号作者撰写,AI仅用于校对及整理。转载请注明出处及原作者。

3617

被折叠的 条评论
为什么被折叠?



