简介:面向 C/C++ 初学者以及需要从零搭建编译调试环境的开发者,这份内容围绕 VS Code 的基础操作与 C/C++ 开发环境配置展开,从界面布局、常用快捷键、插件管理讲到编译器与调试器接入,适合刚接触 VS Code、希望摆脱“能打开却跑不起来”困境的同学按序练习。压缩包共 1132 个文件,整体约 230.42MB,以 png、jpg 截图与 gif 动图呈现操作界面,配合 md 说明文档梳理步骤;同时包含较多 go 源码、sh 脚本、yaml 与 dockerfile 配置及 json、conf、css 等资源,可视为一套带示例工程的配套材料,便于边看边对照实际目录验证配置是否生效。目前已有 4844 人学习下载。读者可从中获得插件选择与设置项说明、tasks.json 与 launch.json 的写法思路、编译链与调试配置的对应关系,以及常见报错的排查方向;示例工程与容器配置文件也有助于理解多文件项目的组织方式,降低上手阶段的试错成本。
1. 先弄清它到底是什么:VSCode 不是「一条龙」的软件
不少人第一次听到 VSCode,脑子里浮现的是 Word 那种东西:打开、敲字、点一下,结果就出来了。真装上打开一看,界面干干净净,写了几行 C++ 代码,却不知道该按哪里才能让它跑起来——这不是你笨,它本来就不是「一条龙」的工具。VSCode 是一个代码编辑器,它擅长的是让你舒服地敲字、看字、改字;把 C++ 翻译成电脑能执行的东西,是另一套程序干的活。所以零基础入门这件事,顺序比努力重要:先明白它是「写字台」不是「厨房」,再把它装好,最后请来真正干活的编译器,屏幕上才会跳出第一行输出。下面按这个顺序走一遍。
2. 为什么写 C++ 的人都爱用它:先分清编辑器和编译器
2.1 把「写 C++」拆成三道工序:敲字、翻译、运行
写一段 C++ 并在屏幕上看到结果,中间其实隔了三道工序。第一道是把你的想法按语法规则敲成.cpp文本文件,这活是编辑器干的;第二道是把这份人能读懂的文本翻译成 CPU 能读懂的机器指令,这活是编译器干的;第三道是操作系统把翻译好的程序加载起来执行,屏幕才出现输出。
拿寄快递来类比就很好理解:VSCode 是你写字、贴单子的桌子,编译器是楼下真正把包裹送上路的快递车。桌子再好,没有车,单子填得再漂亮也送不出去。新手最常卡住的地方,就是把「桌子到了」当成「快递通了」,然后对着 F5 按半天没反应,怀疑自己是不是不适合学编程。
这也是为什么很多教程会反复强调:.cpp文件本质就是个纯文本,你用记事本也能写、也能存。编辑器提供的只是效率——语法高亮把关键字染成别的颜色、自动补全省掉一半敲键盘的力气、括号配对帮你找漏掉的右花括号。这些东西用久了会形成肌肉记忆,但它们是锦上添花,不是必要条件。
理解这个分层之后,你看 VSCode 的界面就不会发怵了。左边那排图标里,最常用的是资源管理器(看文件)和扩展(装插件);底下那片区域是终端,编译命令就在那儿敲。中间那块最大的空白,就是你的写字台。至于「翻译」和「运行」,等我们把编译器请进来再说。
2.2 为什么新手容易把「装编辑器」当成「装好了 C++ 环境」
这是零基础入门最高频的误会,没有之一。原因出在 VSCode 的设计思路上:它本身是一个很轻的壳,只带最基础的文本编辑能力,剩下的功能全靠插件往上拼。装完之后打开一个.cpp文件,它甚至只是一片白底黑字,连颜色都没有,因为此时它还「不认识」C++。
这种设计带来两个后果。好处是启动快、什么语言都能写,不会像某些重型开发工具那样一个语言塞一个安装包,装完硬盘少一大块。坏处是它把「配环境」这件事摊到了你面前:你得自己决定用什么编译器、装在哪儿、要不要加进系统路径、调试器怎么调起来。这些在别的工具里是被打包隐藏的,在这里全成了显式步骤。
我第一次配的时候也犯过这个错,装完编辑器就兴冲冲新建文件写了个cout,然后找了三分钟运行按钮,最后在菜单里翻出一个「运行」点了下去,弹出来一行报错,大意是找不到编译器。当时第一反应是软件坏了,重装了一遍,还是同样的报错。后来才明白:它不是坏了,是它压根不知道去哪儿找翻译官。
所以后面的章节里,装 VSCode 和装编译器会被拆成两件事。你只要心里装着「我在给一个空壳配工具链」这个念头,后面每一步都不会觉得莫名其妙。
2.3 装之前先看一眼自己的电脑条件
动手之前花两分钟确认三件事,能省掉后面一堆麻烦。第一件是操作系统:Windows、macOS、Linux 三条路走的工具不一样,下面按 Windows 讲,因为这是新手踩坑最多、教程最杂的一类环境;macOS 和 Linux 自带编译器,装完 VSCode 基本就能编译,少一大截步骤。
第二件是磁盘位置:所有和代码相关的东西,一律放在没有中文、没有空格的路径下。比如D:\code,别放D:\我的文件\新建文件夹。这一条听起来像玄学,但它是真真实实会让你卡半天的坑,原因在第 5 章会讲清楚。现在只要记住「纯英文、无空格、别放桌面」就够了。
第三件是权限:安装编译器时如果装到C:\Program Files这类目录,某些操作可能需要管理员权限,初学者最好统一装到一个自己说了算的目录,比如C:\mingw64。这样后面改配置、加路径都不用跟系统权限较劲。
注意:路径这条规则贯穿全文。代码文件、编译器安装目录、配置文件里写的路径,三者都不要出现中文和空格,能省掉大约一半的入门故障。
3. 第一步怎么迈:装好 VSCode 和 C++ 编译器
3.1 装 VSCode:安装向导里那几个勾最好都打上
去 VSCode 的下载页拿 Windows 版安装包,双击运行,一路下一步。真正值得停下来看一眼的是「选择附加任务」那一页,上面有几个勾选项,新手容易一路点过去,然后在后面用的时候才发现不方便。
最实用的两个是「将“通过 Code 打开”操作添加到 Windows 资源管理器文件上下文菜单」和「添加到 PATH」。前者让你以后在文件夹里右键就能直接打开项目,不用每次先开软件再找文件;后者把code这个命令写进系统路径,将来在终端里敲code .就能打开当前文件夹,属于用了就回不去的效率操作。
其余几个勾选项,比如把 VSCode 注册成常见文件类型的默认编辑器,按自己喜好来就行,不影响后面的 C++ 配置。装完之后第一次打开,界面是英文的,别急,3.4 节会处理。
装好之后先别急着写代码,花十秒做个体检:打开 VSCode,按Ctrl+`(反引号,键盘左上角 Esc 下面那个键)调出终端,看看下面是不是弹出了一片命令行区域,里面有一行路径提示。这片区域后面会反复用到,它是你和编译器对话的窗口。
3.2 装编译器:MinGW-w64 装进去的到底是什么
编译器不是一个单独的程序,它是一整套工具的组合。MinGW-w64 这个名字可以拆开看:它提供的是 Windows 上能用的 GNU 工具集,里面装着几个关键角色。g++.exe是 C++ 编译器,负责把.cpp翻译成.exe;gcc.exe是 C 编译器,写 C 语言时用它;gdb.exe是调试器,负责让程序跑一步停一下,让你看清里面的变量;还有一堆.dll动态库文件,是这些程序运行时要依赖的零件。
去 MinGW-w64 的发布页面找打包好的压缩包或安装程序,选 64 位版本,解压或安装到一个纯英文路径下,比如C:\mingw64。装完打开这个目录看一眼,里面应该有一个bin文件夹,点进去能看到g++.exe和gdb.exe就在里面。记住这个bin目录的完整路径,下一步马上要用。
提示:不同来源的 MinGW-w64 打包方式不一样,有的给安装程序,有的给压缩包。判断装没装对的唯一标准,是
bin目录里能不能看到g++.exe。看不到就是没装对,不用往下走。
3.3 配环境变量:让终端能直接喊出 g++
现在编译器已经在硬盘上了,但系统还不知道它的存在。你在终端里敲g++,系统会去几个预设的目录里找,找不到就报「不是内部或外部命令」。环境变量里的 PATH 就是那张「去哪儿找」的清单,我们要做的事,是把C:\mingw64\bin这个目录加进清单。
操作路径是:在开始菜单搜「环境变量」,打开「编辑系统环境变量」→ 点「环境变量」按钮 → 在下方的「系统变量」里找到Path→ 双击 → 点「新建」→ 粘贴C:\mingw64\bin→ 一路确定。注意是加到Path里面,不是新建一个变量;也注意别把bin之后的文件路径也加进去,加到bin这一层就够。
加完之后,VSCode 和终端都得重启才会读到新配置,这一步经常被跳过。重启完在终端里敲:
# 查询 g++ 版本,能打印出版本号就说明系统找到它了 g++ --version # 查询调试器版本,后面打断点调试要用 gdb --version第一行输出的内容大概是「g++ (某版本) ...」开头的一段文字,包含版本号和版权声明;第二行类似。如果两条都正常打印,说明工具链通了,这是整个入门过程中最值得庆祝的一步。如果还是提示找不到命令,先别怀疑安装包,八成是路径加错层或者终端没重启,第 5 章有详细排查。
代码后面的说明:--version是一个查询参数,它的作用是让程序打印自己的版本信息然后退出,不参与任何编译工作。用它可以干净地验证「系统能不能找到这个程序」和「找到的是哪个版本」两件事,比直接编译一个文件更直观,出问题时也更容易定位。
3.4 中文界面和三个值得先装的插件
界面语言可以一键切。按Ctrl+Shift+X打开扩展面板,搜索Chinese,找到简体中文语言包装上,右下角会弹一个提示问要不要重启并切换语言,点确定,重启后界面就是中文了。这一步纯属舒适度提升,不做也不影响编译。
真正影响 C++ 体验的是另外三个扩展。第一个是 C/C++ 扩展,它提供语法高亮、代码补全、跳转定义、错误提示,装上之后你的.cpp文件立刻从白底黑字变成有颜色的代码稿。第二个是 Code Runner,它给右上角加一个三角形运行按钮,点一下就能跑当前文件,很适合刚学语法时快速验证一小段代码。第三个可以放一放,等需要写多个文件的项目时再考虑。
装扩展有个原则:按需装,不要看到推荐就点。装太多同类扩展会互相抢功能,出现「代码下面全是红波浪线但其实没错」的诡异情况。第 5 章会专门讲这个坑。
提示:扩展装完如果没生效,先看右下角有没有提示需要重载窗口。VSCode 的扩展大多需要重载才完全接管功能,这不是装失败。
4. 跑通第一个 C++ 程序:从空白文件到终端跳出 Hello
4.1 先建一个干净的文件夹,别在桌面乱放
新手最常见的文件管理方式是「新建一个文件,随手存桌面,名字叫新建文本文档.cpp」。这么干前三天没事,一周之后你会有一桌面散装代码,互相重名,分不清哪个是哪个,编译出来的.exe也混在里面。更麻烦的是,某些配置写法默认以「当前打开的文件夹」为基准,没有一个正经文件夹,配置就会到处乱飘。
正确做法是建一个专门放代码的目录,比如D:\code,然后在里面为每个练习建子文件夹,比如D:\code\hello。打开 VSCode,点「文件」→「打开文件夹」,选中D:\code\hello。这一步的关键是「打开文件夹」而不是「打开文件」,打开文件夹之后左侧资源管理器会显示这个目录,VSCode 也会把它当作当前工作区,后面生成的配置文件才有地方落。
在这个文件夹里新建文件,命名为hello.cpp。注意扩展名必须是.cpp,不是.txt,也不是.c。.c是给 C 语言用的,虽然 g++ 也能编译,但语法检查的行为会不一样;.txt干脆不会被识别成代码,编辑器不会给你高亮。
4.2 五行代码,逐行读懂
在hello.cpp里敲下这段:
#include <iostream> // 引入输入输出流库,cout 靠它才能用 int main() { // 程序入口,操作系统从这里开始执行 std::cout << "Hello, C++!" << std::endl; // 向终端打印一行字并换行 return 0; // 返回 0 告诉系统:程序正常结束了 }逐行拆开看。第一行#include <iostream>是预处理指令,作用是把这个库的内容在编译前原样搬进来,iostream的名字来自 input/output stream,也就是输入输出流。没有这一行,下面的std::cout就无从谈起,编译器会直接报「未声明的标识符」。
第二行的int main()是每个 C++ 程序的固定入口,int表示这个函数会返回一个整数,括号里是参数列表,现在空着表示不接收参数。操作系统启动你的程序时,会先找到这个叫main的函数,从它的第一行开始执行。名字写错一个字母,比如写成mian,程序就找不到入口,链接阶段会失败。
第三行是实际干活的一句。std::cout是标准输出流,<<在这里不是移位运算,而是「把右边的东西送到左边去」的意思,重载之后读作「输出」。std::endl表示换行并刷新缓冲区。整句连起来读就是:把Hello, C++!这个字符串送进标准输出,然后换一行。
第四行的return 0是给操作系统看的返回值,约定俗成的规矩是 0 代表一切正常,非 0 代表出了某种问题。新手阶段这一行必须写,虽然很多环境里不写也能跑,但养成习惯比省一行字重要。
4.3 手动编译一次:搞清楚 g++ 到底做了什么
先别用任何按钮,手动跑一遍,这样你才知道自动化工具在背后替你做了什么。在 VSCode 里按Ctrl+`打开终端,确认当前路径是D:\code\hello,然后敲:
# 把 hello.cpp 编译成可执行文件 hello.exe # -g 生成调试信息,-o 指定输出文件名 g++ hello.cpp -g -o hello.exe # Windows 下运行当前目录的 exe,点号代表「当前目录」 .\hello.exe第一行命令里,g++是我们请来的编译器,hello.cpp是要翻译的源文件,-g是参数,含义是「在输出的程序里保留调试信息」,没有它后面打断点会失败,-o hello.exe表示输出文件叫hello.exe。这几个参数的位置不严格,但-o后面必须紧跟输出文件名,这是新手容易写漏的地方。
这条命令如果成功,终端不会有任何输出,只是在文件夹里多出一个hello.exe,这是 C++ 编译器的传统:没消息就是好消息。如果失败,会打印一段以error:开头的报错,包含文件名、行号和原因,比如hello.cpp:3:5: error: 'cout' was not declared in this scope,读法是「哪个文件的第几行第几列,出了什么问题」。
第二行.\hello.exe是运行。前面那个.\在 Windows 终端里表示「当前目录下的」,不写的话系统可能会去别的地方找。运行成功,终端会打印一行Hello, C++!。看到这一行,说明从源码到执行这条链彻底通了。
4.4 写两个配置文件:tasks.json 和 launch.json 各管什么
手动敲命令能跑通,但每次改完代码都要重新敲一遍,很烦。VSCode 的做法是把编译和调试分别写成配置文件,按 F5 就能一键完成「编译 + 启动调试」。这两个文件分工明确:tasks.json负责「怎么编译」,launch.json负责「怎么运行和调试」。
先建tasks.json。按Ctrl+Shift+P打开命令面板,输入tasks,选「任务:配置默认生成任务」,再选「使用模板创建 tasks.json 文件」,最后选「Others」。生成后把内容替换成:
{ "version": "2.0.0", "tasks": [ { "label": "build-hello", "type": "cppbuild", "command": "C:\\mingw64\\bin\\g++.exe", "args": [ "-fdiagnostics-color=always", "-g", "-std=c++17", "${file}", "-o", "${fileDirname}\\${fileBasenameNoExtension}.exe" ], "options": { "cwd": "${fileDirname}" }, "problemMatcher": ["$gcc"], "group": { "kind": "build", "isDefault": true } } ] }参数逐个说明。label是这个任务的名字,后面launch.json要原样引用,改成别的记得同步改。command是编译器的完整路径,必须换成你自己bin目录下的g++.exe,路径里的反斜杠在 JSON 里要写成双反斜杠。args是传给编译器的参数列表,-g保留调试信息,-std=c++17指定语言标准,${file}是当前打开的源文件,${fileDirname}和${fileBasenameNoExtension}分别是当前文件所在目录和去掉扩展名的文件名,这些是 VSCode 的变量,会运行时替换成真实路径。
再建launch.json。在左侧活动栏点「运行和调试」图标,点「创建 launch.json 文件」,选择环境为 C++ (GDB/LLDB),然后把生成的内容替换成:
{ "version": "0.2.0", "configurations": [ { "name": "调试 hello.cpp", "type": "cppdbg", "request": "launch", "program": "${fileDirname}\\${fileBasenameNoExtension}.exe", "args": [], "stopAtEntry": false, "cwd": "${fileDirname}", "externalConsole": false, "MIMode": "gdb", "miDebuggerPath": "C:\\mingw64\\bin\\gdb.exe", "preLaunchTask": "build-hello" } ] }关键字段是三处。program指向要调试的 exe,写法要和tasks.json里的输出路径对得上;miDebuggerPath指向gdb.exe,同样要换成你自己的路径,写错的话按 F5 会弹一个「找不到调试器」的提示;preLaunchTask必须等于tasks.json里的label,它的意思是「启动调试之前先跑一遍这个编译任务」,这一步保证你调试的永远是最新代码。
注意:这两个文件是 JSON 格式,但 VSCode 允许在里面写注释(这种宽松格式叫 jsonc)。如果你把内容复制给别的工具用,注释要去掉,否则会解析失败。
4.5 按 F5 打断点,看变量怎么变
配置齐了,回到hello.cpp,在第 4 行那句std::cout左边的空白处点一下,会出现一个红点,这就是断点。按 F5,程序启动后会在断点这一行停住,左侧面板会显示当前所有变量的值,顶部弹出几个控制按钮。
这时候界面可能和你想的不太一样:代码行高亮成黄色,说明执行停在这儿,但这一行还没执行。按 F10 是单步跳过,执行当前行然后停到下一行;按 F11 是单步进入,遇到函数会钻进去。对这段代码来说,按一次 F10,std::cout那句执行完,再按一次,return 0执行,程序结束。
调试的意义在于「看内部状态」。现在这段代码太简单,看不出价值,你可以自己加一行int a = 10;再打个断点,停下时看左侧变量区里a的值是不是 10。学会这个动作,以后遇到「为什么我的变量算出来不对」这类问题,就不用靠打印语句到处猜了,这是新手到熟手之间一个很明显的能力分水岭。
5. 新手最容易翻车的五个地方:C++ 环境配置排查清单
5.1 终端提示「g++ 不是内部或外部命令」
现象很直接:在终端里敲g++ --version,返回一行「'g++' 不是内部或外部命令,也不是可运行的程序或批处理文件」。这说明系统在 PATH 清单里找了一圈,没找到。
原因是环境变量没配对,常见三种情况:一是Path里添加的目录写成了C:\mingw64,少加了末尾的bin;二是添加之后没有重启终端或 VSCode,进程还在用旧的环境变量;三是把变量加到了「用户变量」而当前终端跑在需要「系统变量」的上下文里,虽然大多数情况两者都生效,但混用容易出意外。
解决办法按顺序排查:先在文件资源管理器里手动进到C:\mingw64\bin,确认g++.exe真的在里面;再打开环境变量窗口,检查Path里那一行是不是精确到bin;最后彻底关掉 VSCode 和所有终端窗口重开,再敲一次g++ --version。三遍走完还没通,把Path里那一行截图对着字符逐个比,八成是多了空格或者用了中文冒号。
5.2 编译通过了,但运行的还是上一次的结果
现象是:你改了一句输出文字,按运行,终端显示的却还是旧内容。或者反过来,编译报错一大堆,但程序照旧能跑起来。
原因通常有两个。一是编译产物的路径不一致,tasks.json里-o指定的输出文件叫a.exe,而launch.json里program指向的是hello.exe,两者对不上,调试器跑的是硬盘上遗留的旧文件。二是你点了右上角 Code Runner 的三角按钮,它有自己的编译规则,走的是临时目录,和你的tasks.json完全是两条路,配置改了也不生效。
解决方式是统一入口:要么全部走 F5 加launch.json,要么全部走 Code Runner,不要混着用。混用的时候先确认当前跑的是哪条链路,再看那条链路对应的输出路径。另外养成一个习惯,改完配置后手动删掉目录里所有.exe再重新编译一次,能排除掉大部分「幽灵旧文件」问题。这个坑我自己踩过不止一次,明明代码改了,运行结果死活不变,查了半小时才发现跑的是上周的产物。
5.3 打断点调试,程序一闪而过或者断点变灰
现象有两种表现:一种是按 F5 后程序直接跑完,断点根本没停;另一种是断点圆圈变成灰色空心,鼠标悬停提示「未绑定」。
断点不生效最常见的原因是编译时没加-g。调试信息是编译期写进可执行文件的,事后补不上,所以tasks.json的args里必须有-g。第二种原因是program指向的 exe 和当前源文件不是同一个,比如你打开了hello.cpp,但launch.json里写死了program为另一个项目的路径,调试器加载的是别人的程序,你的断点自然对不上。
还有一种情况是程序跑得太快,externalConsole设为true时窗口执行完立刻关闭,看起来像一闪而过。解决方法是把externalConsole改成false,让输出留在 VSCode 内置终端里,或者在return 0之前加一句std::cin.get();让程序等你按回车。新手阶段建议先用内置终端,看得见输出,心里有底。
5.4 中文路径或空格路径导致编译失败
现象是编译时报一串看不懂的错,可能提示找不到文件,也可能提示某些字符无法识别,但代码本身检查过没问题。
原因几乎都出在路径上。编译器和构建工具对路径里的空格、中文、特殊符号处理得并不好,D:\我的代码\第一天\hello.cpp这种路径在命令行传参时容易出岔子。尤其是空格,它在命令行里本来就是参数分隔符,路径里带空格就必须加引号,而配置文件里那一堆变量展开之后有没有引号,新手很难一眼看出来。
解决办法很干脆:把所有代码目录迁到纯英文、无空格、无特殊符号的路径下,比如D:\code。新建的每个练习文件夹也用英文小写加下划线,比如hello_world、test_02。文件名同理,别用「练习一.cpp」这种命名。这条规则看着像老一辈程序员的迷信,其实是踩过太多次之后的血泪经验,遵守它的成本几乎为零,能省掉的问题却不少。
5.5 装了一堆插件,代码下面全是红波浪线
现象是代码明明能编译能运行,编辑器里却满屏红色波浪线,鼠标悬停提示「无法打开源文件 iostream」。
这不是代码的问题,是编辑器的「智能提示」没找到头文件。C/C++ 扩展需要知道你的编译器在哪儿、头文件在哪儿,才能给你正确的补全和报错。默认情况下它可能猜不到,尤其你装了多个 C++ 相关扩展的时候,它们会互相抢占解析权。
解决方法是打开命令面板,输入C/C++: Edit Configurations (UI),在「编译器路径」里填上你的C:\mingw64\bin\g++.exe,在「IntelliSense 模式」里选对平台。如果装了多个同类扩展,先把多余的禁用掉,只留一个。红波浪线是提示不是判决,判断代码对不对的唯一标准是能不能编译通过,这一点在入门阶段一定要分清,否则很容易被编辑器的误报劝退。
6. 接下来学什么:从能跑到会用的四步
跑通 Hello 之后,最容易犯的错是立刻去啃厚书或者刷题库,然后在第三个知识点上卡住,回头发现自己连报错都读不懂。我给零基础的人排的顺序是这样的,四步走完,你会明显感觉到「顺手」这两个字。
第一步,把编译报错当成教材来读。每次报错不要急着搜答案,先自己拆:文件名、行号、错误类型,error和warning要分开看,前者必须解决,后者可以先放着。练上二十次,你会发现自己能读懂七成的报错,这个能力比多背十个语法点管用。
第二步,把语法基础打扎实,但只学用得上的。变量、循环、条件、函数、数组、字符串、指针,这些是后面所有内容的地基。学到指针那一节卡住是正常的,先跳过继续往下走,等写完两三百行代码再回头看,很多当时不懂的地方会自己通。
第三步,学会用小项目固化习惯。不要一直写单文件练习,试着把一个程序拆成两个文件加一个头文件,体会一次「为什么要拆」。顺便把变量命名、缩进、注释这些事在早期就做对,后期改起来成本高得多。
第四步,把版本管理用起来。哪怕只是本地记录每次改动,也值得花半小时学会基本的提交和回滚。我曾经因为没这个习惯,改崩了一个能跑的版本,又没有备份,只能凭记忆一行行往回敲,那次之后我每次动手改结构之前都强制先存一个能跑的版本。
| 阶段 | 目标 | 判断标准 |
|---|---|---|
| 第一阶段 | 能独立配好环境并跑通程序 | 换台电脑能在二十分钟内重配一遍 |
| 第二阶段 | 能读懂常见编译报错 | 遇到error不搜也能猜出大概方向 |
| 第三阶段 | 能拆多文件组织代码 | 写得出头文件并被两个源文件引用 |
| 第四阶段 | 能管理自己的代码版本 | 敢在没有备份的情况下重构一段代码 |
不用追求一步到位,每一阶段花两到三周都算正常。真正拉开差距的不是学了多少语法,而是「环境出问题能不能自己修好」和「代码崩了能不能退回上一个能跑的版本」这两件事。从那以后我每次动配置文件之前,都会先把能跑的那一版复制一份存起来,这个习惯救过我无数次。希望帮到你。
本文还有配套的精品资源,点击获取