十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

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

新手学C语言环境配置:Qt Creator+MinGW实战指南

新手学C语言环境配置:Qt Creator+MinGW实战指南 1. 为什么新手学C语言我反而推荐Qt Creator而不是VSCode先说点实在的。很多刚接触C语言的朋友一进论坛铺天盖地都是用VSCode配C/C环境的教程什么MinGW下载、环境变量配置、launch.json、tasks.json一套折腾下来少则半小时多则一整晚还没写出一行代码就在配置环节劝退了。作为一个被这些工具虐过无数遍的人我想给新手一个更稳妥的路径直接用Qt Creator来写C语言。Qt Creator本质上是一个专业的集成开发环境IDE很多人的认知停留在这是搞Qt图形界面用的其实完全忽视了一个事实——它内置了对纯C和C项目的完整支持自带的MinGW编译器会跟随安装包一键配置完毕装完就能直接编译运行C代码几乎零配置。而VSCode本身只是一个编辑器编译、调试、语法提示全靠插件和外部工具链配置链路长、出错点也多。对初学者来说工具是拿来用的不是拿来折腾的Qt Creator这种开箱即用的体验省下的时间足够你多敲几十行代码了。再说回标题里这套组合Qt 5.14.2 MinGW 7.3.0。这个版本组合是老用户非常熟悉的一套稳定搭配。Qt 5.14.2属于Qt 5系列里的一个长期支持版本稳定性和兼容性都经过了大量验证配套的MinGW 7.3.0编译器也足够支持C99甚至部分C11标准特性用来学习C语言完全够用。这套组合特别适合Windows环境下零基础起步的读者装完之后既有图形化的IDE界面又有编译器工具链写C程序需要的所有东西一次到位。这篇文章我会把从下载安装到写出第一个C程序的全过程拆开来讲包括每一步为什么这样做、会遇到什么坑、怎么判断安装是否正确、怎么调整配置让Qt Creator更好用、以及非常适合新手的后续练习路径。无论你是刚开始学C语言的在校生还是自学编程的上班族跟着这篇文章走一遍基本可以避开我当年踩过的绝大多数坑。2. 环境选型逻辑为什么是Qt 5.14.2搭配MinGW 7.3.0以及新手如何理解这些版本号在动手下载之前先把这套环境组合的背景搞清楚你就知道为什么这个搭配最合适以后遇到别的版本也不会慌。2.1 版本编号背后的含义Qt 5.14.2在哪个位置Qt的命名规则是主版本号.次版本号.补丁号。主版本号5代表Qt 5大系列次版本号14代表功能迭代到第14轮最后的补丁号2代表小修小补的版本。Qt每年都会发布新版本但并不是越新越好尤其是对新学编程的人选择生态成熟、资料丰富、BUG修复完善的版本远比追求新功能重要。Qt 5.14.2发布于2020年是Qt 5系列生命周期里的一个成熟版本。这个版本稳定性非常好社区讨论量大遇到问题几乎都能搜到解决方案。很多人还在用它做商业项目绝不是过时的配置。Qt 6系列虽然在界面和性能上更进一步但对C语言初学者来说没有任何额外收益反而因为默认不捆绑MinGW编译器套装安装配置的复杂度会高一些。所以从学习成本和生产实际两个角度考虑Qt 5.14.2都是更稳妥的选择。2.2 MinGW是什么为什么Windows上写C经常离不开它MinGW的全称是Minimalist GNU for Windows翻译过来就是Windows上的极简GNU工具集。GNU是Linux/Unix世界里的一套开源软件开发工具集合其中最出名的就是GCC编译器——C语言编译器的事实标准。MinGW把GCC等工具移植到了Windows平台上让Windows用户也能用上这套成熟的编译工具链。在Windows上写C语言编译器不是系统自带的必须额外安装。主流的Windows C语言编译器有三类MSVC微软自家的Visual C编译器、MinGW/GCC、还有Clang。MSVC要配合Visual Studio使用功能强大但对新手来说过于笨重而MinGW轻量、开源、兼容性也好和Qt Creator配合可以说是天然一对。标题里的MinGW 7.3.0指的就是MinGW的GCC编译器版本为7.3.0这个版本对C语言标准的支持覆盖得非常全面同时又是Qt 5.14.2官方安装包中自带绑定的版本装好了就是配套好的不需要额外折腾。2.3 32位和64位怎么选一个容易被忽略的细节在Qt安装过程中会看到让你勾选组件的界面里面有MinGW 7.3.0 32-bit和MinGW 7.3.0 64-bit两个选项。这俩怎么选我的建议是除非你的电脑内存非常老旧4GB以下或者有特殊兼容性需求直接选64位。现在的主流Windows系统基本都是64位64位编译出来的程序能发挥硬件性能而且后续学习过程中遇到的大多数第三方库也都是64位版本居多。当然如果你在安装时两个都勾了也没关系在Qt Creator里可以随时切换构建套件不会冲突。提示如果你打算下载安装后长期使用这套环境建议硬盘预留至少10GB空间。Qt 5.14.2完整安装包接近2.5GB加上解压后的实际占用、MinGW编译器的体积以及以后编译各种Qt项目产生的中间文件10GB是比较充裕的。3. 安装全流程实操从下载到打开第一眼看到的界面3.1 下载安装包时需要避开的几个坑去Qt官网下载安装包新手最容易踩的坑有两个。第一个是下载速度——Qt安装包有时候会走官方CDN速度不太稳定不用急可以换个网络环境重试。第二个是版本入口——Qt官网的下载页面结构经常调整老手有时候都要找半天新手很容易下错。稳妥的做法是直接进入下载归档页面找到qt-opensource-windows-x86-5.14.2.exe这个文件这个名字对应的就是Windows平台Qt 5.14.2开源版安装包。需要特别注意Qt提供两种发布形态一个是在线安装器安装时边下载边装文件很小一个是离线安装包一次下载全部文件体积大但安装时不需要网络。强烈建议新手选离线安装包因为在线安装器需要在安装过程中全程联网中途一旦网络波动就有可能导致安装失败排查起来非常麻烦。3.2 安装过程中的每一项选择都帮你过一遍安装包下载完成后双击运行接下来会经历一系列几步按下面的选项走就可以。第一步欢迎界面直接点Next进入下一步。第二步会要求登录Qt账号。这是很多新手卡住的地方——实际上如果你选择了离线安装包这一步可以直接跳过或者登录界面左下方有Skip按钮。不是非要注册Qt账号才能安装跳过就行。第三步选择安装路径。这里需要注意路径中不要包含中文、空格或特殊字符推荐直接用默认路径比如C:\Qt\Qt5.14.2。很多人喜欢装到D盘或者自定义目录这本身没问题但如果你的路径有中文后面编译项目时可能遇到奇怪的文件路径问题排查起来很头疼。第四步组件选择这是整个安装过程中最关键的一步。打开组件树能找到以下几个需要关注的选项Qt 5.14.2目录下的MinGW 7.3.0 64-bit这是Qt库的MinGW编译版本勾选Tools目录下的MinGW 7.3.0这是编译器工具链本体必须勾选不然没有编译器可用Qt Creator的版本号通常默认勾选的版本就是配套版本保持默认即可其他像Qt Charts、Qt Data Visualization之类的大杂烩组件新手阶段用不到保持默认或全不勾都行不会影响写C语言。关键是别把Tools目录下的MinGW漏掉——我见过太多人安装完成后在Qt Creator里找不到编译器就是因为只勾了Qt库忘了勾编译器工具链。第五步协议相关选项全部接受后点击安装接下来就是等待。根据电脑性能不同安装过程大约需要10到30分钟装到一半千万不要关掉窗口。3.3 安装完成后的第一件事验证环境是否正常安装完成后先别急着写代码做个简单的验证。打开Qt Creator菜单栏点工具→选项→Kits构建套件在左侧编译器页签里能看到自动识别出的MinGW编译器在Qt Versions页签里能看到Qt 5.14.2路径在Kits页签里能看到一个名为 Desktop Qt 5.14.2 MinGW 64-bit的套件。这个套件就是Qt Creator用来编译程序的关键配置它把编译器、Qt库和调试器绑定在一起。如果这三个地方都能看到对应的项说明环境安装是成功的你可以放心往下走。如果发现Kits页签里没有自动识别出套件不要着急手动添加的方法在后面的避坑章节里会有详细说明。4. 手把手写出第一个C程序从新建文件到编译运行全链路环境装好了接下来就是最让人兴奋的部分——动手写代码。4.1 新建一个纯C语言的空项目打开Qt Creator第一次启动可能会提示你选择主题界面风格也可以导入设置直接一路默认就行。进入主界面后操作步骤如下菜单栏点文件→新建文件或项目会弹出新建项目向导。左侧项目分类列表里有很多类型注意不要选Qt Widgets Application那是做图形界面程序的。我们需要选Non-Qt Project非Qt项目→Plain C Application纯C应用。这个项目类型创建的就是一个不依赖Qt库的纯C语言程序正是我们需要的。点Choose后到下一步Location位置设置需要填写项目名称和保存路径。项目名称建议用英文——因为项目名称会直接影响生成的构建目录名和中间文件路径一旦用中文或特殊符号后续编译时可能出现不可预料的路径问题。保存路径同样建议全英文比如D:\CProjects。注意向导还会生成一个创建路径提示如果路径下已有同名项目它还会提醒你选择新的名字。在这里会遇到一个新手很容易忽略的设置项Build system构建系统。向导会提供qmake、CMake、或Qbs等选项。对纯C语言项目来说选qmake就行它是Qt默认的构建工具配置简单对新手友好。CMake虽然现在也是主流但对初学者来说理解成本高一些没必要在这个阶段折腾。选好之后点Next。接下来会让你选择Kit Selection套件选择这里会列出前面验证过的构建套件勾选Desktop Qt 5.14.2 MinGW 64-bit再点Next。最后编译配置保持默认直接点Finish完成项目创建。4.2 删掉自动生成的模板代码从零写一个C程序项目创建完成后Qt Creator会打开一个默认生成的main.c文件里面是一段最简单的模板代码。我把新手写作时最容易混淆的一个点先提前说明C语言源文件的后缀名是.c而C源文件的后缀名是.cpp。如果你在新建文件的时候不小心把源文件后缀写成了.cpp那么即使你写的语法完全是C语言风格编译器也会按C去编译一旦用了某些C特有的写法就会报错。建议后面始终看一眼编辑器顶部的文件名后缀。把main.c里的模板代码清空手动输入下面这段程序#include stdio.h int main() { printf(Hello, C World!\n); return 0; }这是每个C语言学习者的第一段代码不要嫌它简单重点是通过这个过程跑通整个编辑—编译—运行的链路。建议你亲自动手敲一遍不要复制粘贴体会一下代码补全、括号高亮等IDE操作。第一行的#include stdio.h是头文件引入stdio是standard input output的缩写标准输入输出库。printf函数声明在这个头文件里所以必须引入。main函数是程序入口每个C程序有且只能有一个main函数。printf(Hello, C World!\n)中的\n是换行转义字符表示输出完这行文字后换行。return 0;表示程序正常结束。4.3 编译运行并看懂下方输出窗口敲完代码后按快捷键F5是直接编译并运行如果想只编译不运行按CtrlShiftB。实际上最常用的操作是两个点击界面左下角的绿色三角按钮Run快捷键是CtrlR它会自动先编译再运行。编译结束后Qt Creator界面下方会展开一个应用程序输出窗口你的程序输出结果会显示在那里。正确输出结果应该是Hello, C World!这里有个很多新手会犯迷糊的地方程序在Qt Creator的输出窗口里显示结果并没有出现一个独立的命令行黑色窗口。这是因为Qt Creator默认把程序的标准输出重定向到了IDE界面里。如果以后你想让程序在独立命令行窗口里运行需要在项目的构建配置里调整Run in terminal选项。这个后面讲到的时候再细说。在编译输出页签里能看到完整的编译命令和结果提示。如果一切正常编译输出里会显示类似qtcreator_ctrlc_stub...程序退出代码0的信息。退出代码0是程序正常结束的标志。如果编译出错这个页签里会出现红色的错误信息下面章节会专门讲怎么排查。4.4 让控制台窗口停留的技巧上面那个程序运行时如果你在IDE里点击运行可能什么都没看清程序就结束了。因为printf打印完就直接return 0退出窗口一闪而过。初学者想知道运行结果可以在return 0;之前加一行getchar();getchar函数会等待用户从键盘输入一个字符程序运行到这里会停住直到你按下回车键。这样窗口就不会一闪而过了。但要注意在Qt Creator的输出窗口模式下这行将等待你在应用程序输出窗口的输入框里输入回车。如果想体验独立的黑色命令行窗口效果可以这样设置项目左侧面板点项目标签找到Run运行设置勾选Run in terminal在终端中运行。再次点击运行时会先弹出独立的运行窗口程序的输出显示在黑色窗口里。提示刚开始学C语言的阶段建议保持不勾选Run in terminal直接在IDE输出窗口看结果因为你写的程序以后会越拉越长需要经常调试IDE输出窗口的查看体验更好。5. 新手必踩的坑编译报错、控制台乱码、套件缺失的全流程排查就算你按照上面的步骤走也难免会遇到各种意外情况。我把新手最常见的几类问题整理成排查手册你对照着自己排查。5.1 构建套件Kits是空的没有可用的编译器安装完Qt Creator新建项目的时候勾选Kit却发现列表里没有任何Kit可选。这个问题很典型几乎每周都有新手在论坛上问。原因通常是安装时漏掉了Tools下的MinGW编译器组件。排查链路是这样的菜单栏点工具→选项→Kits左侧切换到编译器页签。如果编译器列表为空说明系统里没有任何可用的编译器。这时有两个解决办法重新运行Qt安装程序在组件选择界面勾选Tools目录下的MinGW 7.3.0完成安装后重新打开Qt CreatorKits页签会自动识别。使用Qt Creator菜单工具→选项→Kits→编译器页签的Add→GCC按钮手动指定编译器路径。MinGW的编译器路径默认位于C:\Qt\Qt5.14.2\Tools\mingw730_64\bin\gcc.exe和g.exe。但如果安装时本来就没装MinGW这个路径是不存在的还是得回到第一种方法。5.2 控制台输出中文变成乱码怎么调UTF-8在C程序里写中文比如printf(你好世界\n)运行时发现输出窗口显示乱码。这是Windows平台下的经典问题根源是编码不一致。简单梳理一下Qt Creator默认使用UTF-8编码保存源文件而Windows系统在运行控制台程序时默认用的是ANSI简体中文系统下是GBK/GB2312编码。UTF-8编码的中文字符被GBK解码自然就变成了乱码。我在Qt 5.14.2环境里实测过在代码顶部加#include windows.h然后在main函数开头加SetConsoleOutputCP(CP_UTF8);可以解决控制台输出中文乱码的问题。操作后的代码如下#include stdio.h #include windows.h int main() { SetConsoleOutputCP(CP_UTF8); printf(你好C语言\n); return 0; }如果配合Run in terminal模式运行在Windows 10/11自带的终端里这种方式的兼容性更好。如果还是乱码就检查项目文件的保存编码确保是UTF-8。Qt Creator在右下角状态栏可以直接看到和切换文件编码。5.3 编译报错层面常见错误信息的含义C语言的编译错误提示对新手来说有点像天书下面列几种最常见的情况。如果出现error: xxx undeclared这类错误比如忘记引入头文件就调用printf函数报错信息里会指出第一行有问题的代码位置并提示函数未声明。解决办法就是补上对应的#include。如果出现error: expected ; before } token一般是某行语句没以分号结尾。C语言规定表达式语句结尾必须加分号。注意C语言的语句结尾加分号和编码习惯里的逗号是完全不同的概念可以自己自查一下。如果出现undefined reference to main那是因为找不到main函数。可能原因包括源文件里没有写main函数或者编译的源文件列表里不包含包含main函数的那个文件。编译错误排查的思路和解题一样大家记住一个技巧看第一行报错不要看后面的。很多时候后面的报错都是第一个错误的连锁反应解决了第一个后面的自然消失。5.4 程序编译成功了但运行时报错或闪退程序编译运行有几种常见现象一种情况是程序在输出窗口里什么结果都没有然后提示程序异常结束。这通常是因为程序运行时访问了非法内存地址段错误。对新手期常见于数组越界访问、指针未初始化等。例如int arr[3] {1,2,3}; printf(%d\n, arr[5]);访问arr[5]超出了数组边界行为未定义轻则输出垃圾值重则直接崩溃。另一种情况是编译时正常运行时提示程序无法启动因为计算机中缺失libgcc_s_seh-1.dll之类的错误。这是MinGW编译器依赖的动态库没有在系统环境变量里。但是因为你是通过Qt Creator的构建套件运行的它通常已经把动态库路径自动配置好了。如果你把编译好的exe单独拷贝到别的电脑上运行遇到这个问题说明那台电脑上没有MinGW运行库。解决方法是把C:\Qt\Qt5.14.2\Tools\mingw730_64\bin目录下的相关dll文件与exe放在同一目录下即可。5.5 Qt Creator界面文字显示不全或字体太小装完Qt Creator发现界面文字特别小或中文字体发虚看起来费劲可以在工具→选项→环境→界面中调整字体大小和DPI缩放设置。如果你用的是高DPI屏幕Qt Creator在默认设置下可能会模糊需要勾选在需要时缩放字体选项。推荐在文本编辑器→字体和颜色中把编辑器字体设置为Consolas、微软雅黑混合字体字号14号左右这样代码中英文的显示都比较清楚眼睛也轻松一些。6. 让Qt Creator更好用的进阶设置与新手提高建议你已经能跑通第一个C程序了下面的内容是让以后的编码体验更舒服、水平提升更快的附加项。6.1 代码自动补全域作用符触发补全Qt Creator的代码补全功能非常强大。在编辑区输入几个字母后会弹出候选列表。新手需要知道的是默认情况下补全提示有时不会自动弹出需要手动按快捷键Ctrl空格触发。其实更常用的技巧是输入代码时手动点击补全列表中的选项或者直接输入::、-等符号也会触发自动匹配。比如你输入pri它会提示printf回车确认一次操作就完成了一大段函数名的输入。代码补全不是偷懒工具它最大的价值在于减少拼写错误。新手手敲代码时经常把printf拼成prinf这类低级错误编译器报错后还要找半天用补全就没这个问题。6.2 代码格式化一键对齐让你告别乱糟糟的缩进代码缩进混乱会影响阅读逻辑还可能造成括号不配对问题。在Qt Creator里写代码时按Tab键可以让当前行和后续代码保持一致的缩进。如果你想让整份代码自动对齐使用快捷键CtrlA全选再按CtrlI自动缩进选中的代码代码块瞬间变得规整。一个优秀的习惯是每次写完一个函数或一个代码块就按一次这个快捷键检查一下。6.3 断点调试新手也要学会的排错方式有的初学者觉得调试是以后才需要学的高级技能其实恰恰相反越早学会调试学C语言越快。调试的核心思路是让程序运行到某一行暂停让你逐行观察变量的值看程序到底在哪里出现了不符合预期的行为。在Qt Creator里点击编辑器左侧的灰色边栏可以在某一行代码上打上一个红色小圆点——这就是断点。然后按F5快捷键启动调试程序会运行到断点位置暂停。此时界面下方的调试器窗口、局部变量和表达式窗口会显示当前所有变量的值。按F10可以单步执行下一行按F11可以进入函数内部按ShiftF11跳出当前函数按F5继续运行直到下一个断点或程序结束。拿最经典的求阶乘程序来举例当返回值一直不对时在循环里的sum sum * i行打上断点运行到断点时观察sum和i的值变化很快就能定位问题出在循环边界还是初始值上。6.4 零基础到入门的练习路径建议环境和基础操作都掌握之后剩下的事就是写代码、写更多地代码。我给新手一条清晰的练习路径第一阶段先把最基本的语法过一遍变量与数据类型、输入输出函数printf和scanf、条件判断if-else与switch、循环for与while、数组与字符串。每一个知识点都写一个小程序验证一次比如用for循环打印九九乘法表用数组实现倒序输出。第二阶段学函数和指针这是C语言的精髓也是学习门槛最高的地方。可以练习自己封装函数实现求最大公约数用指针交换两个变量的值用指针操作数组完成冒泡排序。第三阶段学结构体与文件读写实现一个简单的学生成绩管理系统把学生信息写入文件再读出来体会真实项目中操作数据是什么感觉。在学习过程中强烈建议配合翁恺老师的C语言视频课程他对初学者极为友好讲的每一个概念都通俗易懂。你可以在写练习题或看视频时把代码在Qt Creator里运行调试理解和记忆的效果比单纯看视频要好很多倍。6.5 一个容易被忽略但很重要的习惯每次新建项目用来干什么Qt Creator的项目是用一个文件夹管理的每新建一个项目都会生成多个文件.pro、.pro.user、Makefile等。老手会有个习惯每个练习题单独建一个项目文件夹项目名和练习名对应比如ex-01-print、ex-02-array这样。当写了二十个练习后这些文件夹就是一份清晰的成长档案。CtrlR运行上一个项目、CtrlTab切换最近项目配合文件夹归档学习过程非常有条理。在QT环境下新建一个纯非Qt项目实际创建一个文件夹项目的文件管理全在这个文件夹里。初学者可能意识不到项目和单个文件的区别但长期写代码就会发现以项目为单位的组织方式是非常科学的一个项目下有源文件、头文件、资源文件、构建输出目录管理清晰这也是Qt Creator这类IDE优于纯文本编辑器的地方。7. 关于Qt Creator一些容易被忽视的功能和真相7.1 输出窗口与Run in terminal的选择原则前面已经介绍了两种运行方式。实际练习中我建议大部分时间使用默认的Run in terminal不勾选方案直接在IDE的输出窗口看结果。当你需要与用户交互式输入数据——比如用到scanf函数时在输出窗口里运行程序同样会等待你输入。唯一让人觉得不习惯的地方是输出窗口的显示和命令行终端的显示稍有不同但不影响逻辑。如果想模拟考试场景下命令行运行再把Run in terminal开关打开体验真实控制台环境。7.2 学会看构建输出里的关键信息很多新手遇到问题习惯直接百度搜索报错信息然后照抄代码。实际上Qt Creator的构建输出信息已经很明确如果你几乎不看它就错过了最有价值的排错线索。构建输出窗口默认显示在下方里面包括完整的编译命令从哪个文件到哪里用了什么选项、编译警告和错误。点开编译输出的摘要下拉菜单可以切换显示模式。检查输出时重点关注红色字体和error字样以及它给出的文件路径和行号比如main.c:5:5: error: expected ; before...这个信息直接指向main.c文件的第5行排查效率极高。7.3 在旧版本和新版本之间做选择的最强理由最后说一个很多人纠结的过时焦虑。有读者可能会问现在网上都流行Qt 6甚至Qt 7的教程我学一个5.14.2是不是白学了我可以负责任地说不会。Qt的基本使用方法从Qt 5到Qt 6的变化绝大多数集中在C库层面的API调整而Qt Creator作为IDE的操作逻辑几乎没变。C语言标准从C99到C11再到C17核心语法没什么改动C语言学习教程的很多示例代码仍然是几十年前回归的算法。再说了现在很多其他课程的嵌入式开发板配套资料、计算机二级考试题库、学校上机的实验环境用的操作系统、编译器和IDE说不定比Qt 5.14.2这年代还久远工具只是载体核心是掌握方法。7.4 实践才是唯一标准给自己打包一个有成就感的第一个作品按照上面全部内容操作完建议你完成一个稍微有点挑战的小项目来验证学习效果写一个程序输入两个整数输出它们的最大公约数和最小公倍数。这个题目用到scanf、整型变量、if判断和循环、printf输出这五大核心语法同时又要求你自己设计算法思路相当综合。如果能在Qt Creator里顺利跑通这个程序就意味着你已经能独立完成写代码、编译、调试、运行的完整流程也真正拿到了C语言学习的入场券。我始终觉得新手学编程的第一步最重要的不是背语法而是打通工具链和代码输出之间的闭环。只要写完代码能立刻看到结果是认真写的学习节奏就对了只要每次编译报错你能自己看懂错误信息并一步步修正学习能力就在增长。Qt Creator的价值就是把工具链的部分尽可能做好让你把精力专注在代码本身而这也是我为什么愿意花这么大篇幅陪你把它的安装和配置流程走一遍的原因。
返回列表