《C语言编程魔法书:基于C11标准》——第3章 C语言编程的环境搭建3.1 Windows操作系统下搭建C语言编程环境

简介:

本节书摘来自华章计算机《C语言编程魔法书:基于C11标准》一书中的第3章,第3.1节,作者: 陈轶 更多章节内容可以访问云栖社区“华章计算机”公众号查看。

第3章 C语言编程的环境搭建

我们在第2章讲述了学习C语言所必需的一些预备知识。本章将给大家介绍常用桌面操作系统下的C语言环境搭建。这里所讲述的C语言编译器以及集成开发环境(IDE)都是可合法免费下载的,本书不鼓励各位使用盗版或破解软件,所以下面会列出下载这些合法免费软件的官方链接,大家把编程环境搭建完之后即可上机实践编程。

3.1 Windows操作系统下搭建C语言编程环境

Windows操作系统下默认不自带任何C语言编译器,大家必须从网上下载自己所需要的C语言编译器。如果各位想通过C语言开发Windows系统平台相关的应用,或者主要想在Windows平台对C语言程序进行调试,那么往往首选Visual Studio Community。这款开发环境是免费的,里面自带了微软自家的C语言编译器——简称为MSVC。不过当前MSVC无法支持最新的C11标准新特性,而且即便是C99标准也是支持得比较有限,所以它并不适合学习C11最新标准。但对于C语言初学者而言,这款集成开发环境还是非常适合的。幸运的是,2017年3月微软最新推出的Visual Studio Community 2017包含了Clang编译器前端工具,如果我们勾选安装的话即可使用Clang来作为C语言编译器。尽管Visual Studio下的Clang编译器尚处于试验阶段,但大部分功能都可用了。目前笔者测试下来,它对原子操作还没支持好,另外像UTF-8、UTF-16等字符编码问题还与Windows操作系统本身相关,所以要涉及这些问题的话,我们只能使用系统特定的接口去解决或者使用下面提到的MinGW以及Clang官方提供的编译工具链去解决。
所以,如果大家想在Windows操作系统下学习更为完整的C11标准最新特性,那么建议下载MinGW,如果是64位的Windows系统的话则最好下载Mingw-w64。如果还想学习Clang编译器语法扩展的话,也可以再下载单独的Clang编译器。
3.1.1 安装Visual Studio Community 2017
Visual Studio Community最新版本可在微软的Visual Studio官方网站下载:
https://www.visualstudio.com/thank-you-downloading-visual-studio/?sku=Community&rel=15

当我们下载好Visual Studio Community的安装程序之后,将它打开运行。随后会看到一个选择安装组件的对话框。我们在该对话框的右侧能看到已经勾选上的组件以及一些没有勾选上的组件。这里我们必须勾选上“Clang/C2(实验)”这一项,如图3-1所示。因为不安装Clang,后面就无法用它编译C源代码。


ec4f7aba94cc843426fcda61b5598e3671d6c272

安装完成之后,我们打开Visual Studio Community 2017,首先出现欢迎界面。Visual Studio在首次启动时就会很明显地提示我们注册账号或用账号登录。我们先用Hotmail或MSN账号登录注册,如果不注册仅有30天左右的试用时间,但一旦注册完之后就能永久使用了。我们登录完自己的账号之后就可以开始新建一个C语言的项目工程了。
我们找到菜单栏最左边的“文件”,然后选择“新建”,再点击“项目”,如图3-2所示。


894b3bdc39135823a76d55819e01a8f10cafba0b

随后我们会看到新建项目的对话框。在左侧边栏中找到“Visual C++”,然后选中“Win32”,随后在中间栏选择“Win32 Console Application”,最后,在底下输入此工程创建后存放的目录路径以及工程名,如图3-3所示。


98951a2d9f1f3c1cec57a26cd38983debe723abe

点击“OK”按钮后进入应用设置向导界面,如图3-4所示。
我们看到图3-4这个界面时,先别着急点击“下一步”按钮,应先点击左边边栏中的“应用程序设置”,对此进行初步配置。然后进入图3-5所示的界面。
  


<a href=https://yqfile.alicdn.com/467a0dc63bc533cc3301e4c021e2c0d710b1377f.png" >

图3-5所示的界面中,在“附加选项”中,先取消勾选“预编译头”,然后勾选“空项目”。最后,点击“完成”按钮进入到我们所创建的cdemo项目工程的主界面。此时,整个工程是空的,只有文件夹而没有任何文件,需要手工新建C源文件。用鼠标右键单击“源文件”,选择“添加”,然后再点击“新建项”,如图3-6所示。


ea6bdad66bdf6f018f3bdce28293a482818bfb19

在随后弹出的如图3-7所示的对话框中,选中中间栏中的“C++文件(.cpp)”那一项,然后在底下“名称”一栏输入源文件名。


<a href=https://yqfile.alicdn.com/dd852e84636d8fe298420da25b763918f986f5f8.png" >

注意: 这里需要注意,默认文件后缀名是.cpp,即C++源文件,因为Visual C++默认采用C++编程语言,因此我们这里要手工填写.c文件后缀名,使得后续我们用C编译器进行编译构建整个控制台应用。
完成之后,我们点击“添加”按钮,然后再次进入工程主界面,此时即可看到C源文件的编辑界面了。
我们在进入源文件编辑界面后,先对Visual Studio的文本编辑选项做些处理,以便于我们后续可以流畅地编写代码。如图3-8所示,我们在上面的菜单栏找到“工具”,然后选择“选项”。


dac24c95e46678d17e5071924341de196c708944

点击进入后能看到如图3-9所示的对话框。在左边栏找到“文本编辑器”这个选项,然后将它展开,选中“所有语言”,随后我们勾选上“行号”,这样,在编辑每个文本文件时都能看到行号,便于我们查找代码中的语法错误以及调试代码用。


<a href=https://yqfile.alicdn.com/a0bef20339815d5db6dc6dda8e785c5e4ed2fddc.png" >

最后,再选中“制表符”选项,对制表符进行设置,如图3-10所示。习惯上,我们一般将Tab Size设置为4个半角字符,缩进大小也是4个半角字符,然后每个制表符用4个空格代替,这样用其他编辑器浏览Visual Studio编辑过的源文件也不会导致格式错乱。


d6f5e5b1b3526af0314cd246ce6869656ffee76c

接下来我们设置当前的项目工程的属性选项。我们找到菜单栏的“项目”,然后点击“cdemo属性”,如图3-11所示。


8ba4d237b77103f9d546f6211a49877a6d304bbc

在配置界面的常规页面中(见图3-12),先找到左上角的“配置”选项,选择“所有配置”。这样,我们后续做的所有配置都对Debug模式与Release模式同时有效。然后,在右侧找到“平台工具集”,这里需要选择使用“Visual Studio 2017-Clang with Microsoft CodeGen”,这个选项使得我们对当前的项目工程使用Clang编译工具链进行编译构建。


<a href=https://yqfile.alicdn.com/5d73603f1f97e95ee05968812d82de9e0ef9151f.png" >

随后我们展开C/C++这一项,此时仍然需要先将左上角的“配置”设置为“所有配置”。然后找到“语言”,将“C语言标准”设置为GNU11标准。这样我们就能在Visual Studio Community集成开发环境下编写调试大部分基于GNU11标准的C语言代码了。设置如图3-13所示。


8882ee72c9268e3e4035e5c8414f3067a232728d

全都设置完成之后,我们就可以编写第一个C语言程序了。同一般C语言教程一样,我们这里也通过输出一个“Hello, world!”字样,作为第一个C语言代码的演示程序。我们输入图3-14中所示的代码,然后点击工具栏中的绿色三角箭头(图3-14中用矩形框圈出)即可编译运行了。在程序最后的getchar()作用在于:弹出的控制台应用不会在程序终止时马上自动关闭,而是等用户输入一个回车时再关闭。


e971347000c05ae021c66192d075debeaa244486

在图3-14所示的界面中,椭圆圈出来的部分用于设置当前程序以调试模式构建还是以发布模式构建。如果以调试模式构建,我们可以利用Visual Studio内建的调试器做断点跟踪,查看局部对象与全局对象状态以及寄存器状态等,便于调试程序。如果以发布模式构建,那么当前程序会被大幅优化,使得程序运行性能大幅提升,但难以调试。图3-14中,中间用矩形框圈出的部分是设置当前目标程序的执行模式,默认为x86,即32位执行模式。这里我们将它设置成了64位执行模式。
3.1.2 安装MinGW编译器
MinGW编译器是著名开源C语言编译器GCC对Windows操作系统的一个移植版本。通过MinGW,我们就可以在Windows下享用大部分GCC编译器所带来的强大功能了。这对跨平台的C语言开发而言十分有用。下面我们就来介绍如何下载安装MinGW编译器。
首先,我们直接进入这个网址下载安装文件: http://sourceforge.net/projects/mingw/f?iles/latest/download?source=f?iles 。这个文件非常小,因为MinGW采用的是在线安装模式,萃取线上各个最新release版本的组件进行下载。
然后,我们双击安装包,初步安装完毕后弹出对话框如图3-15所示。绿色进度条表示已经安装好了。


d130ef92280491a93de2c4df22fc9349c4cb8bfc

我们点击“Continue”按钮后,出现选择安装更多组件的对话框。我们在左侧栏点击“Basic”,即采用基本安装。然后,在右侧栏安装上全部列出的组件。要选中某个安装组件,鼠标右键该包名,然后在快捷菜单中选择“Mark for Installation”命令,如图3-16所示。


f536b1645cfe704c14600778de23087b0d677d63

全都选择好之后,我们最后更新刚选好的安装包。我们在菜单栏选中“Installation”,然后点击“Update Catalogue”,如图3-17所示。


<a href=https://yqfile.alicdn.com/f64b55b7aee15a5c9c7eba4ff7f4a9be62b36eeb.png
" >

之后会弹出如图3-18所示的界面,点击最左边的“Review Changes”按钮,会弹出如图3-19所示的对话框。


e9b027bf25aacc9a5a2460ea6f54ae324c8458e0

点击“Apply”按钮之后,就会下载安装设置更新后的安装包。等待全都安装完毕后,点击“Close”按钮,退出整个安装程序。


def4f2d7620dfe2caffb8a93dad3aa12c6eda7e8

安装结束后,不要着急使用,而是先将MinGW的bin文件夹注册到环境变量中。先打开“文件资源管理器”,在左侧栏中找到“此电脑”或“我的电脑”,鼠标右键单击它,选择“属性”,进入后点击左侧的“高级系统设置”,如图3-20所示。


6c5d29a85bd3306c919d46a57a16cad98e31c3b1

进入图3-20的对话框之后,点击“环境变量”按钮,进入到“环境变量”对话框。我们在“系统变量”区域选中“Path”变量,然后点击“编辑”按钮,弹出“编辑系统变量”对话框。在“变量值”中往后添加刚才安装后的MinGW中的bin文件夹所在目录。在环境变量中的每个值之间用半角分号“;”进行分隔,如图3-21所示。


<a href=https://yqfile.alicdn.com/71fbbe14b730622cf016268fbdcd5911089d6893.png" >

完成之后,我们就可以打开控制台程序(方法是右键桌面上左下角“开始”按钮,然后选择命令提示符),然后进入要编译的C源文件所在的目录。然后用gcc命令对指定C源文件进行编译构建,如图3-22所示。
这里,我们借用之前在Visual Studio Community下编辑好的源文件test.c。我们先用cd命令定位到test.c所在的目录。然后用gcc --version命令查看当前GCC编译器的版本。最后,用gcc -std=gnu11 test.c进行编译,最终在当前目录生成a.exe可执行文件。我们直接键入a,回车,即可看到程序输出结果。
要注意的是,MinGW是32位的C语言编译器,所以它构建出来的程序也是32位的。如果各位用的Windows操作系统是64位的,那么可以使用Mingw-w64编译器。
3.1.3 安装LLVM Clang编译器
LLVM(Low Level Virtual Machine)起源于一个大学项目,它是一个编译器基础架构项目,用于设计一组具有良好定义的、可重用的库。LLVM起先用于替代GCC(这里的GCC是指GNU Compiler Collection)栈中的代码生成器,然后对GCC中已有的许多编译器进行修改以适配LLVM。后来LLVM发起了开发一个全新的适用于不少编程语言的编译器前端,称为Clang。Clang主要支持C、C++、Objective-C等编程语言,并且主要由Apple公司大力支持和维护。LLVM与Clang都基于BSD许可证,比GPL更宽松。正因如此,现在许多硬件商都逐渐开始投入对LLVM的支持,像Khronos开放标准组织也基于LLVM IR(Intermediate Representation)开发出了自己的一套SPIR-V。Clang编译器在语法上力争支持各大主流编译器的语法扩展,包括GCC和MSVC,所以微软也已经把Clang纳入Visual Studio集成开发环境的工具集中。


<a href=https://yqfile.alicdn.com/de13c679977b15210ab5e42349b771572a61a49c.png" >

我们首先在LLVM Clang官网下载最新稳定发布版本的Clang安装包: http://llvm.org/releases/download.html 。然后,要注意的是选择32位版本,如图3-23所示。


bff567449f2d5b45508397c2b67f0bb332fb273f

由于Clang主要是一个编译器前端,因此它需要依赖其他编译器的连接器以及某些运行时库。所以,我们光安装Clang是无法直接成功构建应用程序的,因而我们要使用Clang的话,必须在此之前先把MinGW安装好。MinGW是32位的,因此为了二进制兼容,我们所选取的Clang也必须是32位的。当然,如果之前安装的是64位的MingW-W64,那么这里需要下载安装64位的Clang。
安装Clang的过程非常简单,可根据安装向导简单地做些选择即可完成安装。安装完成后,可以去“系统”里的环境变量中看,把LLVM目录下的bin文件夹的路径添加到Path环境变量中,如图3-24所示。然后就可以再次使用命令行工具直接编译运行程序了。


b223dc49e0e826568ea0d9f606837d0994b08fd6
相关文章
|
1月前
|
Unix 编译器 Shell
[oeasy]python0033_先有操作系统还是先有编程语言_c语言是怎么来的
本文回顾了计算机语言与操作系统的起源,探讨了早期 Unix 操作系统及其与 C 语言的相互促进发展。Unix 最初用汇编语言编写,运行在 PDP-7 上,后来 Thompson 和 Ritchie 开发了 C 语言及编译器,使 Unix 重写并成功编译。1974 年 Ritchie 发表论文,Unix 开始被学术界关注,并逐渐普及。伯克利分校也在此过程中发挥了重要作用,推动了 Unix 和 C 语言的广泛传播。
41 9
[oeasy]python0033_先有操作系统还是先有编程语言_c语言是怎么来的
|
5天前
|
IDE 开发工具 Android开发
探索移动应用开发之旅:理解移动操作系统与编程实践
【9月更文挑战第36天】在数字化时代的浪潮中,移动应用成为连接用户与数字世界的桥梁。本文将深入探讨移动应用开发的精髓,从移动操作系统的工作原理到实际编程实践,旨在为读者提供一条清晰的道路,以理解和掌握移动应用的开发过程。我们将通过具体示例,揭示如何在不断变化的技术环境中保持应用的性能、安全性和用户体验。无论你是初学者还是有经验的开发者,本文都将为你打开一扇窗,让你一窥移动应用开发的精彩世界。
|
2天前
|
安全 测试技术 数据库
Python编程--sys模块及OS模块简单用例
Python编程--sys模块及OS模块简单用例
|
3天前
|
Linux C语言 iOS开发
MacOS环境-手写操作系统-06-在mac下通过交叉编译:C语言结合汇编
MacOS环境-手写操作系统-06-在mac下通过交叉编译:C语言结合汇编
7 0
|
1月前
|
Shell Linux API
C语言在linux环境下执行终端命令
本文介绍了在Linux环境下使用C语言执行终端命令的方法。首先,文章描述了`system()`函数,其可以直接执行shell命令并返回结果。接着介绍了更强大的`popen()`函数,它允许程序与命令行命令交互,并详细说明了如何使用此函数及其配套的`pclose()`函数。此外,还讲解了`fork()`和`exec`系列函数,前者创建新进程,后者替换当前进程执行文件。最后,对比了`system()`与`exec`系列函数的区别,并针对不同场景推荐了合适的函数选择。
|
2月前
|
安全 Linux 开发工具
探索Linux操作系统:从命令行到脚本编程
【8月更文挑战第31天】在这篇文章中,我们将一起潜入Linux操作系统的海洋,从最基础的命令行操作开始,逐步深入到编写实用的脚本。无论你是初学者还是有一定经验的开发者,这篇文章都将为你提供新的视角和实用技能。我们将通过实际代码示例,展示如何在日常工作中利用Linux的强大功能来简化任务和提高效率。准备好了吗?让我们一起开启这段旅程,探索Linux的奥秘吧!
|
1月前
|
人工智能 物联网 5G
未来编程之钥:移动应用开发与操作系统的融合趋势
本文将探索移动应用开发和移动操作系统之间的紧密联系,并分析它们如何共同塑造了我们的数字生活。我们将从移动应用的开发环境谈起,探讨不同操作系统对开发者的影响,以及这些系统是如何促进创新和提升用户体验的。文章还将展望移动技术的未来,包括人工智能、物联网和5G网络如何进一步整合进移动应用生态中。
|
1月前
|
存储 自然语言处理 搜索推荐
探索OS Copilot——那款让你瞬间变身超级用户、编程如呼吸般自然、文件管理如同魔法般的神奇操作系统辅助神器!
【9月更文挑战第4天】“OS Copilot”是一款高效的操作系统辅助软件,通过智能化手段简化电脑使用,涵盖智能命令建议、代码片段生成、文件管理及任务自动化等强大功能。其简洁的界面与友好的用户体验使其成为提升生产力的理想选择,无论是专业人士还是普通用户都能从中受益。从安装到实际应用都非常流畅,能显著提升工作效率,是优化数字生活的得力助手。
34 0
|
2月前
|
开发者 C# Windows
WPF与游戏开发:当桌面应用遇见游戏梦想——利用Windows Presentation Foundation打造属于你的2D游戏世界,从环境搭建到代码实践全面解析新兴开发路径
【8月更文挑战第31天】随着游戏开发技术的进步,WPF作为.NET Framework的一部分,凭借其图形渲染能力和灵活的UI设计,成为桌面游戏开发的新选择。本文通过技术综述和示例代码,介绍如何利用WPF进行游戏开发。首先确保安装最新版Visual Studio并创建WPF项目。接着,通过XAML设计游戏界面,并在C#中实现游戏逻辑,如玩家控制和障碍物碰撞检测。示例展示了创建基本2D游戏的过程,包括角色移动和碰撞处理。通过本文,WPF开发者可更好地理解并应用游戏开发技术,创造吸引人的桌面游戏。
113 0
|
2月前
|
网络协议 Linux Shell
探索Linux操作系统:从基础到高级编程
【8月更文挑战第31天】本文旨在为读者提供一条清晰的路径,从Linux操作系统的基础知识出发,逐步深入到高级编程技巧。我们将一起揭开Linux神秘的面纱,了解其内部工作原理,并通过实际代码示例加深理解。无论你是初学者还是有一定经验的开发者,这篇文章都将为你带来新的视角和技能提升。