ARTICLE DETAIL

资讯详情

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

C/C++开发环境配置指南:VSCode、Dev-C++、CodeBlocks与CLion实战

C/C++开发环境配置指南:VSCode、Dev-C++、CodeBlocks与CLion实战 C/C这行当说难也难说简单也简单。但不管你以后是想写算法、搞嵌入式、做游戏还是啃底层进门的第一道坎永远是同一个——把开发环境搭起来。我见过太多同学兴致勃勃买了本《C Primer》翻开第一章结果卡在“请先安装一个开发环境”这行字上一卡就是一整天。更离谱的是很多人下了一堆软件装完发现根本编译不了最后连“Hello World”都跑不起来直接劝退。这篇文章我就把C/C最常用的四款开发工具——VSCode、Dev-C、CodeBlocks、CLion——挨个拆开揉碎讲一遍。不仅告诉你每一步怎么点还会解释清楚背后的原理比如为什么配置了编译器才能运行、为什么有时候点编译却报“找不到gcc”。顺便把这些年我在这些工具里踩过的坑、网上被问爆的问题什么中文乱码、调试看不见变量、CodeBlocks启动报错、CLion中文输出乱码之类的一次性说透。不管你是零基础小白还是被环境问题折磨的老手这篇都值得存一份慢慢看。1. 四种工具定位与选型思路先别急着下软件我先把这四兄弟的“性格”给你摸清楚。它们没有绝对的好坏只有适不适合你当前的阶段。1.1 它们各自是什么来头VSCode微软家的免费代码编辑器严格说它不是IDE集成开发环境而是一个“编辑器”。它的看家本领是插件生态极其丰富通过装插件可以变成几乎任何语言的开发环境。对于C/C你需要自己装编译器、自己写配置文件灵活度拉满但新手很容易在配置阶段被劝退。Dev-C老牌免费的IDE很多高校的机房至今还在用。它的特点就是傻瓜式装上就能用自带编译器单文件编译特别方便适合刚接触编程、只想赶紧跑通代码的人。但它的调试功能和代码提示比较弱界面也比较古早一旦项目变大就有点吃力。CodeBlocks同样是免费开源的IDE跨平台支持很好Windows、Linux、macOS都能跑。它的风格比较“学院派”界面简洁对C/C的工程管理做得中规中矩很多算法竞赛选手和大学老师推荐它。优点是配置比VSCode简单功能比Dev-C完整。CLionJetBrains家出品的重量级IDE专为C/C打造也是这四个里最“现代”的。智能提示、重构、调试、CMake集成都非常强你写代码时它就像个贴身助理。缺点是吃内存电脑太老慎用、收费学生可以申请免费教育授权。1.2 选型建议怎么快速决定用哪个如果你还在犹豫我给个最粗暴的建议学生党、零基础、今天就想跑通第一个程序的直接上Dev-C别折腾。要打算法竞赛、需要频繁建临时文件的CodeBlocks够用且稳。以后想走工程路线、愿意花半小时搞定配置的VSCode越用越顺手。不差内存且想要极致写码体验的CLion用过就回不去。说句实在话工具这东西重要的是“顺手”而不是“最贵”。我自己是从Dev-C入门后来用CodeBlocks写过课设中间折腾过VSCode现在主力是CLion。每个工具都有它的脾气等你懂得它们各自的脾气选哪个都不是问题。下面我们就一个个来过。2. 编译器才是主角编辑器只是壳很多新手会混淆一个概念我装了VSCode怎么还不能编译C我要告诉你一个关键认知编译器和你用的编辑器/IDE是两码事。编辑器负责让你写代码而把代码变成可执行文件那个.exe的工作是编译器干的。2.1 从源码到可执行文件的完整链路C/C源文件.c/.cpp要变成能跑的程序大致要经过四个阶段预处理、编译、汇编、链接。预处理处理宏和头文件展开编译把代码翻译成汇编语言汇编把汇编变成机器指令的目标文件.o或.obj最后链接器把各个目标文件和库文件黏在一起生成可执行文件。这个过程大多数时候你不需要手动一行行敲命令但你得知道系统里装了谁在干这活。Windows下最常见的C/C编译器组合是MinGW-w64提供gcc和g另外还有MSVCVisual Studio那套和Clang。注意如果你用Dev-C或CodeBlocks的Windows安装包它们通常自带MinGW编译器所以你感觉不到“装编译器”这个动作。但VSCode和CLion默认不带这是很多人在VSCode里卡死的根本原因。2.2 MinGW-w64的下载与安装要点我建议在Windows上用VSCode或CLion的同学统一走“手动安装MinGW-w64”这条路。去MinGW-w64的官方仓库或靠谱的镜像站下载压缩包比如x86_64-posix-seh之类版本。解压到一个没有中文、没有空格的路径比如D:\mingw64。然后把这个路径下的bin目录里面有gcc.exe、g.exe、gdb.exe这些文件加到系统环境变量Path里。加环境变量的步骤右键“此电脑” - 属性 - 高级系统设置 - 环境变量在“系统变量”里找到Path点编辑新建一行填入D:\mingw64\bin。弄完打开一个全新的命令行窗口输入g --version如果能看到版本号输出说明编译器已经可以全局调用了。我见过不少人卡在这一步明明装好了命令行输命令提示“不是内部或外部命令”十有八九是没开新窗口或者Path路径写错了再检查一遍就好。2.3 验证编译器是否可用命令行窗口里依次测试这几个命令gcc --version g --version gdb --version有输出就是OK。gcc用来编C语言g用来编Cgdb是调试器后面VSCode和CLion调试都要靠它。这一关过了你的电脑才算真正具备C/C的编译能力。3. VSCode配C/C环境实操指南VSCode的本体安装很简单去官网下安装包一路下一步就行。麻烦的是后续配置但只要你理解了我前面说的“编译器是核心”这件事配置就变得顺理成章了。3.1 必装插件与配置文件框架装完VSCode先打开扩展面板CtrlShiftX搜索并安装这两个插件C/C微软官方出的提供智能提示、调试支持C/C Extension Pack它会把语言、CMake、调试器等常用工具打成一包接下来新建一个文件夹作为项目目录比如D:\cpp_workspace\hello在里面新建一个hello.cpp文件先写一段能跑通的测试代码。然后按F5或点击侧边栏的运行调试按钮VSCode会提示你选择环境这时候它会自动生成两个重要文件.vscode/tasks.json编译任务和.vscode/launch.json调试配置。3.2 tasks.json和launch.json核心配置有的新版VSCode会一键生成模板这套模板在大多数情况下能用但不够稳。我直接给你一份实测很稳的配置模板直接把内容覆盖进去就行。.vscode/tasks.json负责编译核心字段如下{ version: 2.0.0, tasks: [ { type: cppbuild, label: C/C: g.exe build active file, command: D:/mingw64/bin/g.exe, args: [ -fdiagnostics-coloralways, -g, ${file}, -o, ${fileDirname}\\${fileBasenameNoExtension}.exe ], options: { cwd: ${fileDirname} }, problemMatcher: [$gcc], group: { kind: build, isDefault: true }, detail: 用g编译当前活动文件 } ] }这段配置的意思是用指定的g.exe编译当前打开的文件-g参数是为了生成调试信息否则接下来没法断点调试-o是指定输出文件名。如果你电脑的MinGW装在别处记得把command里的路径改成你自己的。.vscode/launch.json负责调试核心字段如下{ version: 0.2.0, configurations: [ { name: C/C: g.exe build and debug active file, type: cppdbg, request: launch, program: ${fileDirname}\\${fileBasenameNoExtension}.exe, args: [], stopAtEntry: false, cwd: ${fileDirname}, environment: [], externalConsole: false, MIMode: gdb, miDebuggerPath: D:/mingw64/bin/gdb.exe, setupCommands: [ { description: 为gdb启用整齐打印, text: -enable-pretty-printing, ignoreFailures: true } ], preLaunchTask: C/C: g.exe build active file } ] }关键点program字段必须指向tasks.json里生成的exe路径miDebuggerPath必须填你本机gdb的路径preLaunchTask填tasks里的label名字。这三个字段互相咬合任何一处不对调试就起不来。3.3 VSCode多文件项目的处理思路很多人学到后面会问我的项目有好多.cpp文件难道每次只编译当前文件当然不是。这时候建议引入CMake或者简单一点用g一次性编译多个文件。快速的做法是在tasks.json的args里把${file}换成所有源文件名或者用${workspaceFolder}\\src\\*.cpp这种通配方式。但如果你准备认真写项目我还是建议直接上CMake。VSCode里安装CMake和CMake Tools插件写一个CMakeLists.txt点几下就能实现整套项目的构建和调试比手写tasks.json灵活得多。这块展开讲又是一篇文章这里先提个引子等你们把单文件玩明白了再进阶。3.4 VSCode那些高频踩坑点说几个VSCode配置C/C时几乎人人都会被坑的地方第一代码能编译但是运行窗口一闪而过。这很正常因为程序执行完窗口就关闭了。解决办法有俩一是在代码里加system(pause)二是在launch.json里设置externalConsole为true让程序在系统命令行窗口里运行就能看到输出和交互了。第二中文乱码。默认情况下MinGW和Windows控制台的编码容易打架。你可以把源码文件编码设为GBK或者更推荐在代码里加一段设置控制台编码为UTF-8的代码这个我后面在CLion部分也会细说。第三按F5后提示“无法打开…exe”或“找不到任务”。先看看是不是没有先保存文件然后检查tasks.json和launch.json里的label和preLaunchTask是否严格一致以及路径里有没有中文或特殊字符。这几个点检查完90%的问题都能找到原因。4. Dev-C这“老家伙”其实很能打Dev-C其实早就不更新了但时至今日它依然是很多中文教材默认推荐的工具原因很简单省心。我也承认如果你今天下午就要交作业现在还没装任何IDE那Dev-C确实是你最快的出路从下载到跑出“Hello World”都不会超过五分钟。4.1 安装与版本选择避坑安装Dev-C建议认准Orwell版5.11经典版本或者搜一下较新的wxDev-C分支。下载下来就是一个setup.exe一路Next注意安装路径最好也别带中文虽然它不像VSCode那么矫情但路径怪异时偶尔会有奇怪问题。装完之后在“工具 - 编译器选项”里确认一下编译器已经被正确识别。如果这里显示“未找到编译器”就手动指定一下MinGW的安装目录。只要这里显示正常写代码、编译、运行就是一条龙顺手的事。4.2 中文乱码的根源与两种解法Dev-C的中文乱码问题估计是全网对Dev-C抱怨最多的一件事。你写了句printf(你好);控制台输出却是一堆“浣犲ソ”类似的乱码。乱码的根源是编码不一致源码保存的编码和编译器认为的编码、以及控制台显示用的编码三者没有对齐。Dev-C老版本默认用ANSIWindows本地编码往往是GBK而很多同学从网页复制代码时带进来的是UTF-8编码。解法一在“工具 - 编译器选项 - 编译器”里给编译器加一条参数-fexec-charsetGBK意思是告诉编译器生成的程序用GBK编码输出中文这样就迎合了Windows控制台的默认显示。实测下来90%的Dev-C乱码问题加这一条参数就能解决。解法二更现代在程序开头加三行Windows专属代码#include windows.h // ... SetConsoleOutputCP(CP_UTF8);这会在程序运行时主动把控制台代码页切成UTF-8。两种方法选一种就行别两个都上不然可能反而更乱。4.3 调试断点与查看变量值的正确姿势热搜里有个问题很典型“Dev-C怎么调试断点、查看当前断点处的变量值”。其实Dev-C的调试功能是藏着掖着的很多人找不到入口。首先必须确认两点第一你打开的项目必须是“控制台应用程序”类型新建项目时选Console Application而不是一个零散的源文件第二在“工具 - 编译器选项”里勾选“在编译时加入调试信息”等价于加-g参数。这两条不做调试就是灰的或不生效。接下来在代码行号旁边点一下出现红点就是断点。按F8或点那个绿色的调试按钮程序会运行到断点处暂停。这时候你可以在下方“调试”面板里看到局部变量的值。如果你想手动看某个表达式的值在“调试”标签页的“监视”栏里右键添加监视输入变量名或表达式比如i、arr[0]、i*2运行到断点时会实时显示数值变化。4.4 注释乱码和错误提示乱码的处理Dev-C连注释都可能乱码。如果你的代码里中文注释变成了乱码大概率是源码文件本身的编码和编辑器默认编码不一致。简单粗暴的办法用Windows自带的记事本打开这个源文件然后“另存为”编码处选择ANSI覆盖保存再用Dev-C打开就正常了。这一步治标治本。另外当编译报错时如果错误信息显示“未编译任何文件”或中文乱码先用前面的-fexec-charsetGBK参数再看。还有老版本Dev-C对中文路径支持很差项目路径里千万别出现中文文件夹名不然不是编译失败就是调试起不来——这个坑我当年踩到怀疑人生。5. CodeBlocks安装、汉化与常见故障CodeBlocks走的是“轻量 跨平台 开源”路线。它的界面乍一看有点复古但用顺手之后会发现它对项目结构的展示非常清晰写课设、做小项目都很合适尤其是不想在VSCode里折腾配置文件的人CodeBlocks是个很好的折中方案。5.1 下载版本怎么选别下错不带编译器的包CodeBlocks官网下载页面其实有个容易踩的坑它会提供好几种安装包比如codeblocks-17.12-setup.exe和codeblocks-17.12mingw-setup.exe。前者是纯IDE不带编译器体积小后者内置了MinGW编译器装完直接能编译。新手一定认准名字里带mingw的那个包也就是“codeblocks-17.12 mingw setup.exe”。否则你装完打开软件新建项目后点编译会提示找不到编译器。如果你不小心下了不带编译器的版本也不用重装去前文说的MinGW-w64单独下载一份然后在CodeBlocks的“设置 - 编译器 - 全局编译器设置”里把编译器的安装目录指过去就行。5.2 启动报错“thesaurus files not found”怎么办这个报错可以说是CodeBlocks的“特色”了英文原话大概是Thesaurus files \spellchecker\th_en_US.idx not found。很多新手一看到这玩意儿就慌了以为软件坏了。实际上这只是拼写检查功能的词典文件找不到不影响你写代码和编译。但每次启动都弹窗确实很烦。出现这个问题的常见原因是安装时选择了带空格的路径或者安装包在Windows某些权限策略下没有把词典文件解压到正确位置又或者软件目录被移动过。解决办法按顺序尝试如果是绿色版或解压版确认解压完整特别是share\CodeBlocks\spellchecker目录下有.idx和.dat文件。把CodeBlocks的安装目录设置为英文路径。右键CodeBlocks图标以管理员身份运行一次让它生成缺失的配置。如果还不行就在“设置 - 编辑器 - 拼写检查”里取消勾选“启用拼写检查”世界就清净了。5.3 汉化不完全与手动汉化步骤CodeBlocks官方安装包默认是英文界面。想汉化可以下载一个zh_CN的locale文件后缀是.mo放到CodeBlocks安装目录下的share\CodeBlocks\locale\zh_CN\文件夹里然后在“Settings - View - Internationalization”里选择Chinese重启后就变中文了。如果汉化后发现界面有些地方还是英文甚至菜单错乱别慌那是语言包版本和软件版本不完全匹配导致的。我建议汉化包尽量找与17.12版本匹配的否则宁可不汉化英文界面也就那几个单词用两天就认识了。我一直觉得IDE界面本身就是学习的一部分这词还能逼自己熟悉一下专业术语。5.4 CodeBlocks无法编译运行的排查清单“点编译没反应”、“编译按钮灰色”、“提示无法找到编译器”是CodeBlocks问题的高发区。按照以下顺序排查基本能覆盖九成情况新建项目时选择的是不是Console application控制台应用。编译器是否成功识别设置 - 编译器 - 全局编译器设置看“Selected compiler”是不是GNU GCC Compiler下方有没有列出编译器路径。项目文件路径是否含中文或空格把整个项目放到D:\code\这种纯英文路径下再试。杀毒软件是否拦截了编译生成的临时exe把项目目录或整个CodeBlocks加入白名单。如果报错信息里提到ld returned 1 exit status通常是链接错误比如main函数重名、缺少某个库需要看上面的具体提示而不仅仅是最后一行。说实话CodeBlocks如果配置正常是个非常稳的工具我很多竞赛选手朋友到现在都还在用它刷题。它的启动速度、占用内存和稳定性在这几个工具里都属于“能打”级别的。6. CLion安装配置与进阶技巧CLion是我现在的主力工具如果你愿意为写代码这件事花点学习成本CLion的体验是四者里最接近“现代化IDE”的智能提示、重构、调试体验完全不是前几个能比的。6.1 安装、激活与Toolchain配置CLion本体是个JetBrains分发安装包装完需要登录JetBrains账号。如果你是在校生有学校邮箱的话一定要去JetBrains官网申请学生教育授权完全免费。就算不想折腾授权CLion也有30天免费试用学生时代用CLion写代码确实能省下很多时间。装完CLion之后第一件事是配Toolchain工具链这是CLion的核心概念。路径在File - Settings - Build, Execution, Deployment - Toolchains。在Environment那里选择MinGW它会自动检测如果没检测出来就手动把MinGW安装目录填进去。检测成功的标志是能看到gcc、g、gdb、make这些组件的版本号都显示出来。如果这一页是空的或有红色报错那编译功能是没法用的。6.2 CLion中文输出乱码的根治方法CLion中文乱码的问题是高频热搜其实根治起来比Dev-C还简单。CLion默认给编译器传的是UTF-8编码而Windows控制台在旧版本下默认GBK两边不一致就乱码。解决分两步 第一步在Settings里搜索“File Encodings”把Global Encoding、Project Encoding、Properties Files三个地方全部设为UTF-8。 第二步在Settings里搜索“Console”把Default Encoding设为UTF-8。 然后确保你代码里没有任何system(chcp 936)这种强行切代码页的语句。如果上面两步做完还有问题就往下走在CMakeLists.txt里加一行告诉链接器运行时把标准输出编码切到UTF-8。add_link_options(-fexec-charsetUTF-8)或者干脆在代码第一行用Windows API强制设置控制台输出为UTF-8#include windows.h int main() { SetConsoleOutputCP(CP_UTF8); std::cout 你好 std::endl; return 0; }大多数情况下把坑填在CMake或者编码设置里就够了。6.3 在CLion中配置JNI环境的经验热搜里有“在CLion中配置JNI环境”这其实是CLion一个比较进阶的玩法了。用CLion写C的本地方法然后通过JNIJava Native Interface让Java调用C整套环境配置确实有点绕。核心诉求是让CLion能够找到你机器上JDK里的jni.h和jni_md.h头文件。常规做法的步骤是确认你已经装了JDK并配好了JAVA_HOME环境变量。然后在CMakeLists.txt里加一段include_directories($ENV{JAVA_HOME}/include) include_directories($ENV{JAVA_HOME}/include/win32)这样CLion在解析和编译时就会自动去JDK目录下找JNI相关的头文件。之后你写的native方法IDE也会有对应的代码提示。如果你在链接时遇到找不到jvm.lib这类库的问题还要把JDK的lib目录加到link_directories里。注意JNI环境配置因人而异如果你用的是别人写好的构建脚本或者Maven插件那么CMake里通常只需要把头文件路径和链接库加对即可具体项目要具体分析。CLion对CMake的原生支持让这套配置比在命令行里手搓Makefile要直观不少。6.4 插件商店搜不到Continue插件怎么破最后说一个我最近遇到的CLion痛点CLion的插件商店是JetBrains全家桶通用的但有时你想装某个插件比如Continue或者某个AI编程助手搜索了半天搜不到。这种情况一般是两个原因。第一CLion版本过旧默认配置的插件仓库地址已经过时去Settings里打开Plugins在Marketplace标签页右上角找“设置”图标检查有没有配置了正确的插件仓库地址。第二有些插件没有在CLion的Marketplace里上架只给IntelliJ IDEA用或者要求你到插件官网下载zip包然后通过“Install Plugin from Disk”手动离线安装。我个人的经验是CLion的插件生态虽然不如VS Code丰富但核心的AI助手、代码规范、正则工具都还是能搜到的。搜不到的时候先去插件官网确认它是否支持CLion再考虑离线安装。还有一个辅助方法把JetBrains系IDE的版本更新到最新2023版以上很多旧版搜索不到的问题会自动消失。7. 今天就能上手的实操总结与个人体会写了这么多最后给你一个能立刻行动的清单。如果你今天就想把环境搞定先确立目标然后照着对应工具的部分操作即可。如果你想用最少的时间跑通第一行C代码装Dev-C新建文件写下Hello World按F11编译运行记住一句话“环境是用起来才熟悉的不是看完教程想明白的。后面遇到问题带着报错信息去搜一搜一个准。你踩过的坑千万人早就替你踩过了。”关于CLion再说个小技巧很多人喜欢在CLion里用Debug模式看变量的变化过程但Debug模式下编译优化默认是关闭的变量值不会被优化掉这正好方便观察所以你调试时千万别手动开O2优化参数否则某些变量会被优化成“不存在”你会以为是自己代码写错了。工具只是起点把代码跑起来的那一刻才是真正的开始。如果你打算长期写C/C我个人最推荐的学习路径是先用Dev-C或CodeBlocks学会基础语法和调试操作理解了“编译-运行-调试”这个过程之后再切到VSCode熟悉配置文件最后根据需求上CLion。环境是死的人是活的适合自己的才是最好的。
返回列表