ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

C语言开发环境搭建全攻略:四款主流IDE安装配置与排错指南

C语言开发环境搭建全攻略:四款主流IDE安装配置与排错指南 每次带新生上第一节C语言课最耗时间的往往不是什么是变量而是我的代码为什么跑不起来。课后答疑里至少三分之一是环境问题软件装好了但编译器没配上、下载了32位版本在64位系统上懵圈、代码文件放在中文路径里直接报错、明明按教程操作了却出来一堆看不懂的英文报错。这些坑我见过太多次所以这篇把C/C环境搭建里的四种常用工具—— VSCode、Dev-C、Code::Blocks、CLion——从下载、安装、配置到排错完整过一遍。你不需要四个都装按自己的阶段和需求选一个就行但四种工具的安装逻辑和常见坑值得都了解一下因为很多问题是通用的。1. 四个工具放在一起比比的其实是学习阶段1.1 为什么环境搭建是C语言第一道坎先想清楚一个事C/C不像Python那样装个解释器就能跑它从源码到可执行程序中间要经过预处理器、编译器、汇编器、链接器。对新手来说第一次接触IDE、编译器、调试器这一堆概念很容易在第一步就懵掉。很多人以为我下载了VSCode就等于会写C了结果写了个hello world点运行弹出g 不是内部或外部命令然后就没有然后了。我用一个厨房类比帮学生理解源码是你写的菜谱编译器是把菜谱翻译成机器能看懂的指令的厨师IDE是把厨房整理好的工作台。VSCode、Dev-C、Code::Blocks、CLion这些工具本质上是不同档次的厨房——有的只有灶台什么都得自己配有的是简易食堂适合快速炒一个菜有的是专业后厨适合正经开餐厅。很多人的问题不是不会写代码而是选错了厨房或者不知道自己的灶台少了一口锅编译器。所以这篇不会只给你安装包链接我尽量把背后的逻辑讲清楚你在用什么编译器、为什么需要配置它、出了问题去哪里排查。这套思路学会之后不管换什么工具都不慌。1.2 四种工具的准确定位编辑器、玩具IDE、教学IDE、工程IDE先给四者做个定位方便你快速对号入座工具本质适合人群上手难度最大的坑VSCode代码编辑器靠插件变身开发环境已有基础、想一套工具通吃多语言的人中高需要自己配置编译器、tasks.json和launch.jsonDev-C单文件友好的轻量IDE大一新生、竞赛选手、只想快速跑通一个.cpp低老版本停更、编码乱码、界面老Code::Blocks经典教学IDE自带工程组织课堂作业、初学者、单片机课程低下载错安装包、编译器选择不对就报错CLionJetBrains出品的重型IDE认真学C、要做工程/项目的人中高需要懂CMake对零基础不算友好说实话每个工具都有自己的舒适区没有绝对的好坏。我见过用Dev-C写完了整个数据结构的也见过在VSCode里折腾了两小时还没跑出第一个程序的。选工具之前先问自己我是想快速验证一段代码还是想长期在一个工程里写C答案不同选择完全不同。2. VSCode从下载到能跑通的完整配置链路2.1 下载安装的两个细节VSCode的下载渠道只有一个建议去官网代码编辑器。post请求注意别点进第三方下载站。安装过程基本无脑下一步但有两个细节经常被忽略。第一如果你是Win7用户VSCode的官方安装包从2022年的某个版本开始已经不支持Win7了需要去历史版本存档找1.70左右的旧版。这个信息很多教程不会提但现实中不少机房和旧电脑还是Win7装最新版直接提示系统不支持。第二安装到哪一步时建议勾选添加到PATH和打开文件右键添加Open with Code这两个选项。加到PATH是为了以后在命令行里能直接敲code打开项目右键菜单则是日常使用中极大提升效率的操作不用每次先开软件再找文件。装完之后第一件事直接去商店装Chinese (Simplified) Language Pack中文语言包。装完按快捷键CtrlShiftP输入configure display language把locale改成zh-cn重启软件就是中文界面了。这步不复杂但确实拦住了不少人。2.2 编译器组件MinGW-w64的准备VSCode本身不包含编译器这是它和后面几个IDE最大的区别。很多新手栽就栽在这VSCode装好了插件也装了写代码全程无报错一点运行却提示找不到gcc。Windows下给VSCode配C/C编译器最主流的选择是MinGW-w64。它就是GCC编译器的Windows移植版负责把源码变成exe。安装方式有两种一是去MinGW-w64的官方仓库下载压缩包解压到一个纯英文路径下比如D:\mingw64然后把D:\mingw64\bin加进系统环境变量的Path里。二是用MSYS2工具在它的pacman终端里执行pacman -S mingw-w64-x86_64-gcc安装。后者对以后想装第三方C/C库的人更友好因为MSYS2自带包管理器编译一些开源库方便很多。装完验证方式永远是在命令行敲一句gcc --version能输出版本信息就说明编译器准备好了。这个验证步骤我在教学里反复强调不管什么工具先确认编译器存在再谈下一步。安装路径千万不要有中文很多诡异问题都是路径里的中文导致的这一步几乎包揽了VSCode环境问题的一半。2.3 插件选择装这五个就够了VSCode的插件数量多到可以把你淹没但对C/C开发来说装不必要的插件反而拖慢启动速度。我的建议是抓住核心五件套C/C微软官方那个扩展名ms-vscode.cpptools提供代码补全、语法高亮、调试支持是C/C开发的核心插件Code Runner选中代码一键运行适合临时写个小程序验证逻辑CMake Tools如果之后用CMake管理项目这个插件能帮你方便地在VSCode里构建和切换目标Chinese (Simplified) Language Pack中文界面Error Lens把编译器报错直接显示在代码行尾排查错误时特别直观需要说明的是现在很多AI编程插件也做得挺成熟比如Continue这类它们可以辅助解释报错信息、自动补全代码。这类插件是可选项新手如果连问题都描述不清AI也帮不上太大忙建议先把基础跑通再考虑。2.4 tasks.json和launch.json把编译和调试串起来插件装完VSCode只是认识C/C但你按F5还不能直接编译调试。这一步的关键是配置两个JSON文件tasks.json负责编译launch.json负责启动调试器。两者通过preLaunchTask字段串起来实现按下F5就自动编译然后进入调试。tasks.json最小配置长这样{ version: 2.0.0, tasks: [ { label: build with g, type: process, command: g, args: [ -g, -stdc17, -fexec-charsetGBK, ${file}, -o, ${fileDirname}/${fileBasenameNoExtension}.exe ], group: { kind: build, isDefault: true } } ] }这里有几个细节值得展开。-g表示生成调试信息没有它调试器就无法定位到源码行。-fexec-charsetGBK是我强烈建议加的Windows控制台默认代码页是GBK如果不加这个参数你用printf输出中文时经常出现一团乱码加了之后编译出来的exe直接用GBK输出中文和系统匹配。${file}是当前活动文件的绝对路径${fileBasenameNoExtension}是文件名去掉后缀的部分。这套变量名VSCode已经定义好了不要自己瞎改。launch.json对应配置{ version: 0.2.0, configurations: [ { name: (gdb) Launch, type: cppdbg, request: launch, program: ${fileDirname}/${fileBasenameNoExtension}.exe, args: [], stopAtEntry: false, cwd: ${fileDirname}, environment: [], externalConsole: false, MIMode: gdb, miDebuggerPath: gdb, preLaunchTask: build with g, setupCommands: [ { description: Enable pretty-printing for gdb, text: -enable-pretty-printing, ignoreFailures: true } ] } ] }program告诉调试器要运行哪个exemiDebuggerPath指定gdb调试器的位置preLaunchTask的值为build with g必须是tasks.json里那个label这样按F5时会先编译编译成功再启动调试。如果编译报错调试不会启动终端面板会直接显示错误信息。我用这个方案帮学生配置过几百次几乎覆盖了90%的单文件调试场景。缺点是它只编译当前打开的文件适合单文件作业如果你开始做多文件工程建议尽早切到CMake CMake Tools插件。2.5 VSCode里最常见的三个问题第一个是代码有高亮、有补全但一按F5提示找不到g。八成是MinGW没加进Path或者Path改了之后没重启VSCode。环境变量改动后已经打开的VSCode不会自动刷新必须全部关掉重开。第二个是输出中文乱码。前面提到编译时加-fexec-charsetGBK能解决大部分情况。如果还乱大概率是你的源码文件本身是UTF-8编码而编译器按默认方式处理窄字符串这时可以在代码开头用system(chcp 65001nul);把控制台切到UTF-8代码页或者统一用英文输出最省心。第三个是VSCode里调试时看不到变量值。打开launch.json确认MIMode是gdbmiDebuggerPath能正确找到gdb。如果调试器都启动不起来卸载C/C插件重新装一遍往往能解决插件文件损坏的情况我遇到过两三次。3. Dev-C单文件编程时代的好帮手3.1 到底该下载哪个版本Dev-C这个工具说它是上古神器不过分。很多高校的C语言课至今还在用就是因为教学大纲相对固定不需要太新的标准而Dev-C的极简设计正好够用。但Dev-C有个版本混淆问题。网上传得最广的是Orwell Dev-C 5.11一个2015年就停止维护的版本。它经典、稳定、在Win7和Win10上都能跑缺点是界面老、自带编译器版本旧对新C标准支持有限。另一条线是Embarcadero接手后推出的Embarcadero Dev-C版本号已经到7.x界面和编译器都更新了支持C17甚至C20的部分特性。我的建议是如果你只是应付学校C语言课程5.11完全够用因为教材代码几乎不用新特性如果你还想拿它写点新东西、跑跑算法题用新版Embarcadero版体验更好。下载时认准SourceForge或GitHub上的官方仓库不要图方便去百度网盘下别人的打包那个下载来源安全性没法保证我还见过加了广告插件和改主页的Dev-C官网本质上都是捆绑推广碰到这种直接右上角。3.2 装完先改这三个设置Dev-C装完建议先做三件事能省掉后面一堆麻烦。第一设置编译器选项。打开菜单工具 - 编译选项在编译时加入以下命令输入框里按你的编译器版本加一行-stdc11C语言或-stdc17C。默认情况下老版本用的标准很旧有些教材里的代码明明没错却编译不过就是标准没指定到位。同时把生成调试信息打开也就是-g参数不然一会儿没法断点调试。第二改编辑区字体。默认的字体显示中文注释时经常变成小方块或乱码。工具 - 编辑器选项 - 字体把字体改成微软雅黑或者带中文的等宽字体字号调到14左右显示效果立刻舒服很多。这个细节特别有用因为Dev-C的老界面在高分屏上字体小得让人怀疑人生。第三尽量避免把工程或源文件放在含中文、空格、特殊字符的路径下。这些字符在旧版编译器的处理里会出各种玄学问题。我见过学生把代码建在桌面上的新建文件夹(2)里结果编译时gcc直接找不到文件。练习时统一建一个D:\code之类的目录能规避绝大多数路径问题。3.3 断点调试的正确打开方式Dev-C的调试功能虽然颜值不高但逻辑是完整的。很多教程只教编译运行不教调试结果学生卡在程序运行结果不对但不知道哪一步开始错的这个阶段。调试的常规流程是先在代码行号左侧点一下那一行会出现一个红色圆点这就是断点。注意断点一定要落在实际可执行语句上定义变量那一行、空行、大括号上打断点是无效的程序不会在那停。然后打开调试菜单点调试/继续启动调试程序会一直执行到第一个断点处停下。停下来之后在代码里右键选中你关心的变量选择添加查看这个变量就会出现在左侧监视窗口里。之后每点一次下一步程序执行一行监视窗口里的变量值实时变化。这样一步步跟下来很容易看出是哪个循环越界、哪次赋值不对。Dev-C的快捷键和主流IDE略有差异我一般让学生直接点菜单按钮位置看清楚比记快捷键更稳。还有个大坑必须提如果编译时开了优化-O2/-O3调试时变量很可能显示optimized out或者跳行混乱因为优化器会调整指令顺序、删掉临时变量。所以要调试就老老实实关优化用默认的-O0级别。另外Dev-C调试完退出时偶尔报错崩溃这是老版自带的毛病只要代码本身编译运行正常属于工具崩溃不用管它。3.4 Dev-C里的乱码与其他兼容性问题Dev-C的乱码问题要分两种说清楚。一种是编辑器里显示乱码。比如从网上下载的源码打开后中文注释全是锟斤拷。这通常是文件是UTF-8编码而老版Dev-C默认按ANSI/GBK打开造成的。解决办法要么用新版Embarcadero Dev-C它支持编码选择要么把源码文件另存为ANSI编码再打开。用记事本打开文件另存为时编码选ANSI即可。另一种是编译运行后控制台里printf输出的中文乱码。这个和编辑器显示乱码不是一回事是编译器处理宽字符串编码的方式问题。用老版Dev-C自带的GCC时源码文件是UTF-8编码但exe运行后控制台按GBK显示就对不上了。Windows下的临时方案是在代码开头加一句system(chcp 65001nul);切换控制台代码页或者干脆把源码另存为ANSI再重新编译。如果坚持用新版同样可以用-fexec-charsetGBK编译参数一劳永逸。其他兼容性问题还包括Dev-C在Win11的部分版本上会出现界面缩放模糊可以右键exe属性里把高DPI缩放替代设成应用程序。这些属于小毛病不影响核心使用但提前知道比遇到时干瞪眼强。4. Code::Blocks下载错安装包是最大的坑4.1 认准带MinGW的安装包Code::Blocks是我个人觉得最像正经IDE的教学工具因为它有明显的项目管理窗口、编译日志区、调试器面板能帮学生建立工程化思维。但这个工具的第一个坑在下载页面就等着你。官网提供的安装包版本很多其中最关键的区别是codeblocks-17.12mingw-setup.exe这个带mingw字样的安装包内置了编译器而不带mingw的codeblocks-17.12-setup.exe是个只有IDE壳子的空包。很多人下载了后面那种装完发现无法编译然后在网上疯狂搜CodeBlocks无法编译运行其实就是没装编译器。解决办法很简单下载时认准文件名里含mingw-setup的版本。其中17.12是2017年的老版本虽然新版本已经出到20.03但网上主流教程和学校机房大多还是17.12我建议学校教学用17.12就好因为它和大多数教材的操作截图一致少踩版本不同按钮位置不一样的坑。安装路径同样要求纯英文默认的C:\Program Files\CodeBlocks没问题不要手贱改成中文目录。4.2 新建项目与第一次编译的完整步骤Code::Blocks用工程Project来组织文件这和Dev-C的单文件思想不同但更接近真实开发方式。新建项目的操作是File - New - Project - Console application。向导里会让你选语言C还是C然后给工程起名、选择保存路径。注意最后一步Compiler那里默认是GNU GCC Compiler只要安装的是带MinGW的版本这里会自动识别到编译器不需要额外配置。写完代码后按F9这是构建并运行的快捷键。第一次编译会看到下方Build log里刷出一堆信息最后出现Process terminated with status 0类似字样就说明编译成功、程序运行结束了。很多新手第一次按F9时弹出提示说It seems that this project has not been built yet这是正常的直接点Yes让它先构建就行。真正麻烦的问题是后面这种情况写了代码、按了F9然后Build log显示cant find compiler executable in your configured search paths PATH或者gcc: error: No such file or directory。前者是编译器路径问题后者多半是文件路径问题都往下面4.3的排查链路上套。4.3 无法编译运行的高频排查链路Code::Blocks报无法编译运行的原因就那几个但每个我都见人踩过。我总结了一个排查顺序按这个顺序走十分钟内基本能解决。第一检查编译器选择。菜单 Settings - Compiler - Global compiler settings左上角Selected compiler必须显示GNU GCC Compiler。如果显示的是其他编译器或者空那肯定编译不了。顺手点一下右侧的Default按钮恢复默认设置。第二检查编译器可执行文件路径。Settings - Compiler - Toolchain executables点Auto-detect自动检测。如果自动检测失败手动把Compilers installation directory指到MinGW所在目录比如C:\Program Files\CodeBlocks\MinGW然后看下面的C compiler字段是否自动填上了gcc.exe。第三检查工程和源文件路径。Code::Blocks对中文路径的处理一直不让人省心把整个工程目录移到纯英文路径下再试一次。另外工程里的文件名如果带空格比如test 1.cpp也会捣乱改成test1.cpp。第四检查杀毒软件。这个原因比较隐蔽有些杀毒软件会把MinGW目录下的编译器程序当可疑文件处理或者静默隔离导致编译器消失。去杀毒软件隔离区里看看有没有gcc.exe、g.exe被隔离有的话恢复并加入信任区。下面这个表格整理了最常见的报错、原因和对应解法报错/现象可能原因处理方式cant find compiler executable装的是不带MinGW的安装包或编译器路径没配置换成mingw-setup版手动指定Toolchain路径gcc.exe: No such file or directory源文件路径含中文、空格或文件没保存路径改英文CtrlS保存后再编译undefined reference to main工程里没有main函数或选错了文件类型确认有一个源文件包含了int main()ld returned 1 exit status链接阶段出错通常是重复定义或库缺失看full log里具体错误信息双击跳到对应行按F9没反应当前焦点窗口不在编辑器里先点击代码编辑区再按F94.4 启动报错、汉化与词库问题如何处理Code::Blocks启动时如果弹出一条出错信息大意是找不到thesaurus files \spellchecker\th_en_us.idx not found。这条信息很多人第一次看到会慌以为安装包坏了。实际上这只是编辑器自带的拼写检查插件找不到英文词库文件不影响编译、运行、调试任何功能直接忽略即可。不想被它骚扰的话可以在插件管理器Plugins - Manage plugins里禁用SpellChecker插件。汉化方面Code::Blocks本身可以通过往locale目录放中文语言包实现界面汉化但网上流传的汉化包版本参差不齐有些汉化后菜单栏出现乱码、按钮文字显示不全。我的态度是如果英文不成问题就用英文界面因为教程和报错信息搜出来全是英文的界面对得上更好排查如果实在需要中文辅助可以找对应版本的汉化包试一下但别指望100%完善也别在汉化上耽误太久毕竟工具界面翻来覆去就那几个单词。5. CLion用工程化思维写C的第一站5.1 安装、授权与工具链配置CLion是JetBrains全家桶里的C/C专用IDE优点是代码补全、重构、调试体验一流和VSCode那种自己拼装的思路完全不一样它是开箱即用的重型工具。代价是它对零基础并不友好启动后默认用CMake组织工程新手要额外理解一套构建系统的概念。先说服使用授权的问题。网上搜CLion破解版确实能搜出一堆东西但我强烈建议别碰那些资源很多带捆绑软件、后门程序我见过不止一个学生为此中招。CLion有官方30天试用期教育用户可以通过学生身份免费申请全家桶授权开源项目作者也能申请免费版这些正规渠道足够你用了。对环境配置本身来说破解不破解没有任何区别还平白增加安全风险。安装完成后第一次启动会自动检测工具链。如果你按前面章节装了MinGW-w64CLion大概率能自动识别到如果用了Visual Studio的编译器它也能识别如果电脑里有WSL还能选WSL作为工具链环境。工具链的选择在Settings - Build, Execution, Deployment - Toolchains里能看到。我的建议是Windows下优先用MinGW因为MinGW配CLion是社区里最成熟的组合各种教程和坑的解决方案最多。5.2 用CMake管理项目从最简配置起步CLion新建项目时会自动生成一个CMakeLists.txt很多人第一次看到它直接懵了。这里没必要害怕CMake本质上就是告诉构建系统这个项目有哪些源文件、要生成什么目标。最简配置也就三五行cmake_minimum_required(VERSION 3.25) project(MyDemo) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) add_executable(main main.cpp)这个文件的意思是工程名叫MyDemo使用C17标准生成一个名为main的可执行文件它来自main.cpp。CLion会自动读取这个文件在编辑器右上角出现一个运行/调试配置点绿色三角就能构建并运行。多人刚开始不习惯的是在CLion里手动添加一个新源文件后必须把它加进CMakeLists.txt里的add_executable否则CLion不会编译它甚至不会高亮代码。这个设计和Dev-C的写出文件就能跑体验差别很大但这就是工程化的基本逻辑构建系统需要明确知道哪些文件属于这个目标。如果你有多个源文件比如main.cpp和util.cpp就写成add_executable(main main.cpp util.cpp)头文件不用写进去它会通过include来关联。这个配置就够应付大部分课程作业了。5.3 调试多个目标程序与项目转换CLion一个比较实用的场景是同一项目里调试多个目标程序。比如数据结构课要求你写一个顺序表实现再写一个链表实现你不想开两个工程就可以在一个CMakeLists里声明两个可执行文件add_executable(list_array list_array.cpp) add_executable(list_link list_link.cpp)改完CMakeLists之后CLion会重新加载配置右上角的运行目标下拉框里就多了两个选项可以随时切换运行或调试任何一个。调试多目标时还有一个技巧Run/Debug Configurations里可以为不同目标设置不同的命令行参数调试时按目标保存配置互不干扰。这个功能在期末上机考试场景下特别好用一个工程解决所有题目不用来回切窗口。至于CLion打开sln工程这个问题坦率说CLion不原生支持直接打开Visual Studio的.sln你别浪费时间在插件商店里找所谓VS project opener那个不靠谱。我的做法是把sln里的源文件按目录结构列出来新建一个CMakeLists.txt把它们重新组织生成一个新的工程。虽然要手动重写一次构建配置但迁移之后就能享受CLion的补全和调试体验这个过程做一次也就明白了CMake的核心逻辑。遇到.sln里有stdafx.h这类预编译头直接忽略在CMake里不需要它们。5.4 乱码、JNI、嵌入式等进阶场景速览CLion的使用过程中几个出现频率较高的问题值得提前预习一下。第一个是中文输出乱码。Windows下运行刚写好的C程序printf中文乱码和前面VSCode的原理一样源码UTF-8控制台GBK。CLion里的标准解法分两步先Settings - Editor - File Encodings把所有编码都设为UTF-8保证源码文件是UTF-8无BOM然后在main函数开头加两行#include windows.h SetConsoleOutputCP(CP_UTF8);这样运行时控制台会切到UTF-8代码页输出中文就正常了。也有人喜欢在CMakeLists里加add_compile_options(-fexec-charsetGBK)这也能解决但我不太推荐因为你一旦换了Linux环境这个参数就失效了。第二个是JNI环境配置。CLion配合Android NDK做JNI开发时需要通过CMake引入JNI的头文件目录在CMakeLists.txt里加include_directories($ENV{JAVA_HOME}/include $ENV{JAVA_HOME}/include/win32)然后用javac -h生成头文件再把头文件里的函数声明拷贝到C源文件里实现。CLion的代码补全对jni.h里的类型识别比较滞后需要在Settings - Directories里确认头文件已被索引否则会出现找不到jni.h的红色波浪线。第三个是嵌入式开发。CLion配合STM32CubeMX已经成了不少嵌入式开发者的新选择流程是安装ARM GCC工具链、OpenOCD在CLion里配置嵌入式开发插件CubeMX生成CMake工程后用CLion打开调试时通过OpenOCD烧录和调试。这个组合比Keil的编辑体验好太多但初学嵌入式建议还是先用Keil因为学校实验室环境大概率是Keil等对硬件流程熟悉后再迁到CLion不迟。第四个是插件商店搜索不到某个插件的问题。比如有人在CLion的插件商店里搜不到Continue插件还在那怀疑是不是网络问题。CLion插件商店确实可能存在区域分发差异遇到这种情况最稳的办法是去插件官网下载对应版本的zip包然后打开Settings - Plugins点齿轮按钮选择Install Plugin from Disk离线安装一次性搞定。这个方法对所有JetBrains系IDE都通用。6. 写在最后我的工具选择建议这篇文章写到这里四种工具都过了一遍。最后给你一个不那么端水的个人建议算是踩过无数坑之后的总结。如果你是第一次接触C语言、目标是顺利通过学校的课程考试那就直接选Dev-C或者Code::Blocks。理由很简单配置门槛低、和教材匹配度高、遇到问题搜出来的资料也多。Dev-C适合那种只有单个.cpp的作业Code::Blocks适合老师要求按工程交作业的场景。不要在字都写不全的时候就去折腾VSCode的JSON配置那是在消耗你对编程本来就稀薄的热情。如果你已经写了几个月C/C或者确定以后要往软件开发方向走那请果断上CLion。学生身份免费申请授权这件事真的不难操作一次之后补全和调试体验是质的提升。VSCode对我而言更像第二开发环境——写Python、写前端、快速改脚本的时候用正经写C工程我还是会回到CLion。还有一点想多说一句很多人在装环境卡住时第一反应是焦虑觉得自己不适合编程。其实恰恰相反每个从业者都在某个环境配置上翻过车。配置工具本质上是信息检索能力和耐心的训练这本身就是编程能力的一部分。把这篇文章里的排查思路记下来以后不管遇到什么开发环境你都能更快找到问题所在。这也是我写这篇长文的真正目的。
返回列表