一、概述
对于一名C语言程序员而言,进行C语言程序的开发一般需要一个文本编辑器加上一个编译器就足够了。但为了方便起见,我们选择使用集成开发环境——Visual Studio(简称VS)。安装Visual Studio
下面讲一下如何安装VS,按照步骤完成即可。
二、安装Visual Studio
1. 下载引导安装包
引导安装包可以从官网下载:https://visualstudio.microsoft.com/zh-hans/downloads/
选择下载社区版Community即可
图 1. VS下载引导安装包
如果是Mac笔记本,可以选择下方的Mac版本:
图 2. VS下载引导安装包-Mac版
如果你不想在官网下载安装(或者你根本打不开微软的网站),可以选择从百度网盘下载引导安装包:
链接:https://pan.baidu.com/s/1e27THIEiIVGTdzYmdpHsrA?pwd=4uo0 提取码:4uo0
引导安装包直接双击打开,即可开始VS的安装。
2. 在线安装(推荐)
双击引导安装包后,就会进入工作负荷以及安装位置的选择:
-
工作负荷选择(也就是选择特定开发任务的工具组件集合):
图 3. VS安装-工作负荷选择
直接按照图示中选择C++桌面开发即可,其他的不要选择。
-
安装位置选择:
图 4. VS安装-安装位置选择
建议将三个路径放在同一级目录下,这样便于管理,可以参考图片中给出的路径。
建议安装目录不要放在系统盘下,VS作为IDE会占用较多磁盘空间。
-
上述设置完成后,点击安装即可。安装过程会下载较多资源,请耐心等待。
图 5. VS安装-联网下载安装
此过程需要连接微软服务器进行在线安装,通常情况下即便不挂梯子也能正常完成安装。
-
安装完成后,建议重启电脑。
注意事项
-
安装完成后,VS一般不会自动创建桌面快捷方式,可以在开始菜单中找到VS,点击启动。建议将它发送桌面快捷方式或者钉到任务栏,后续一段时间我们会经常使用VS。
-
第一次启动VS,会提示登录微软账号,这一步相当于激活VS。建议登录,如果没有微软账户,建议注册一个。
图 6. VS安装-登录微软账号
-
如果在线安装失败(比如碰到始终卡顿在某个进度,或者直接失败),这是微软服务器的问题,此时可以考虑离线安装VS。
3. 离线安装(后补方案)
如果实在没有办法在线成功安装,可以考虑离线安装,按照以下步骤完成。
-
通过百度网盘获取离线安装包:
链接:https://pan.baidu.com/s/1hp7ZAFaP_R11Ih8y0ReUTQ?pwd=jpgp 提取码:jpgp
-
解压离线安装压缩包,进入解压后的文件夹目录,在资源管理器的文件路径栏输入"cmd",然后回车。
图 7. 离线安装VS-步骤1
此时会在此安装包目录下,打开Windows命令行,如下图所示:
图 8. VS离线安装-步骤2
-
在打开的命令行中输入以下指令:
1
.\vs_setup.exe --noWeb --add Microsoft.VisualStudio.Workload.NativeDesktop --includeRecommended
然后回车,即可开始安装。
-
开始安装后,仍然进入工作负荷和安装目录的选择。此时选择安装"使用C++的桌面开发"的工作负荷,以及修改一下安装目录即可。
-
此安装过程全程无需联网,耐心等待安装完成即可。
注:以上操作都无法完成安装的话,可以直接求助老师。
三、使用Visual Studio进行开发
好了,到此你已经成功安装了VS,距离成为一名真正的C程序员又进了一大步。
下面我们来简单介绍一下如何使用VS进行开发,写出我们第一个C程序的演示代码——HelloWorld!。
1. 创建项目
第一次打开VS,界面如下图所示:
图 9. 第一次打开VS的效果图
推荐直接选择"继续但无需代码",然后就进入了VS主界面:
图 10. VS主界面
注:初次进入还有一个新特性提醒界面,已经被我关闭了。
点击VS左上角菜单栏的**“文件 --> 新建 --> 项目”**
图 11. 使用VS创建项目
然后进入创建新项目的选择,选择创建"控制台应用",因为我们程序的输出结果要依赖于控制台,所以创建控制台应用。
图 12. 创建控制台应用
随后就进入了创建新项目的配置页面:
图 13. 配置新项目页面
到这一步就是整个创建项目的流程,但最后一步**“配置新项目”**我们需要详细谈一谈。
2. 配置项目
上图的配置页面中可以看到,我们主要可以调整三个选择:
- 项目名称。
- 位置。
- 解决方案名称。
我们先重点来讲一下VS当中项目(project)和解决方案(solution),理解它们之间的关系是使用VS的一个重点。
1. 项目 VS 解决方案(重要)
解决方案:
**解决方案是VS当中进行代码开发的顶层结构,它是一个或多个项目的容器。**用于协调多个项目之间的关系和依赖性,尤其是在大型应用程序开发中。解决方案不仅仅是项目的简单列表,它还包括项目之间的依赖关系、编译顺序以及其他元数据。
解决方案的文件夹下通常会自动生成一个扩展名为**.sln**的文件,来保存这些项目之间关系的信息。
项目:
**项目是一个C程序构建过程中的基本组织单元。**项目中会包含:源代码文件、资源文件(如图片或数据文件)、配置信息文件等。
通俗的说:
VS中的一个项目是进行开发的基本单元,一个解决方案至少有一个项目,也可以包含多个项目,这些项目可能相互依赖。解决方案会管理这些多个项目的关系。
如果你熟悉Java开发,那么可以使用IDEA和VS做一个类比:
- IDEA的module(模块)是开发的基本单元,project(工程)是模块的容器,一个工程最少有一个模块,但也可以有多个模块。
- VS的项目是开发的基本单元,解决方案是项目的容器,一个解决方案至少有一个项目,但也可以有多个项目。
2. 命名
搞清楚它们之间的关系后,就要稍微浅谈一下命名了:解决方案和项目应该如何命名呢?
首先,我们要说一个大的原则,以后大家无论进行什么语言的程序开发,在遇到命名时,都一定会存在一个大前提:“简洁明了、见名知意”!
也就是说,这个命名应当明确表达功能和作用,这是最重要的原则。
其次,一般来说,名字都应该由合法的英文单词组成,不应出现中文或者中文拼音。
最后,解决方案和项目命名的普遍约定是:
- **采用大驼峰命名法(也叫帕斯卡命名法)。**每个单词的首字母都大写,包括第一个单词,各个单词之间直接连接不用加下划线等符号。例如:FirstName、MyProgram等。
- 尽量避免出现空格,点、横杆等特殊字符。命名仅由英文字符和数字组成。
最后,关于命名并没有强制的一定的约束,具体还是要看各公司各研发单位的习惯而定。上面给出的只是大家普遍遵守的一些约定。
注意事项
为了让大家更清晰的看代码,上课时我会把解决方案、项目的命名前带上序号,比如:
- “00_HelloWorld”:第一个项目,这个项目叫HelloWorld。
- “50C_Day01”:第50期,C语言部分内容的第一天。
但一般而言,这种序号在实际开发中不会使用。
3. 完成项目创建
上面的所有内容都了解后,就可以完成一个项目的创建了,大家参考我的命名和配置:
图 14. VS项目创建配置图
具体的解释都已经在图中贴出了,设置完成后,点击创建即可完成项目创建。
3. 创建源文件
完成项目创建后,还需要在项目下创建C语言源文件,在一个C语言的源文件当中才能够开始写C语言代码。
点击创建项目后,首先你会直接进入以下页面:
图 15. VS项目主界面-HelloWorld
VS会默认创建一个"HelloWorld.cpp"文件,这是一个C++源代码文件,但我们学习的是C语言,所以我们可以直接删除这个文件。
然后**“右键点击源文件 --> 添加 --> 新建项”**,
图 16. VS新建项
此时可能会弹出以下两种窗口:
图 17. 新建项选择-情况1
图 18. 新建项选择-情况2
无论出现哪一种情况都一样,直接修改名字为"xxx.c",即可在源文件下面创建一个C语言源文件。
其中"xxx"代表此源文件的名字,关于源文件的命名,建议大家采取以下策略:
- C语言源文件通常以".c"结尾。
- 见名知意,使用合法的英文单词。
- 单词字母全部小写,如果文件名由多个单词组成,通常使用**下划线"_"**来分隔这些单词。
- 不要出现下划线以外的特殊字符。原则上只使用下划线、英文字母和数字作为命名且不要用数字开头。
举几个例子:
-
a.c
-
main.c
-
hello.c
-
hello_world.c
-
…
-
编写代码
创建完毕.c文件后,双击打开此文件,然后编写代码。
在本小节中,我们只管写代码运行,下节我们再讲这些代码的含义。
代码块 1. 一个简单的hello world案例
1
#include <stdio.h>
2
int main() {
3
printf("hello world!\n");
4
return 0;
5
}
代码编写完成后,你可以使用以下两个按钮来启动程序(在VS主界面的上方菜单栏):
图 19. VS-启动程序的两个按钮
这两个按钮的差别是:
- 点击按钮1**“本地 Windows 调试器”**启动程序,此时程序会以Debug模式启动。
- 点击按钮2**“开始执行(不调试)”**启动程序,此时程序会以正常模式启动。
关于Debug模式和正常启动程序的区别,后续课程会详细讲解。在日常的开发中,我们更建议大家使用按钮1,以Debug模式来启动程序。
点击启动程序后,若正常运行不出意外,你会看到控制台如下图所示:
图 20. VS-HelloWorld运行结果
当然,如果出问题大概率就是代码中的单词拼错了,某一句代码漏了分号等问题。请检查一下VS的错误输出列表,修改代码即可!
注意事项:
-
**请大家把编译器的版本从默认的x64(64位)改为x86(32位)。**这么做的目的主要是为了上课方便以及规避一些可能存在的坑。
即:
图 21. 选择32位平台编译器来编译代码
-
无论点击哪个按钮,以什么模式启动程序,都需要经历编译源代码,生成可执行程序,执行可执行程序的过程。(这个过程后续会详细讲解,现在你只需要知道代码被编译执行就可以了。)
5. VS项目目录的说明(补充)
在VS的解决方案资源管理器当中,我们可以清晰的看到一个项目下面又分了几个**“层级”**,如下图所示:
图 22. VS项目的层级关系
我们可以在解决方案资源管理器当中选择一个项目,然后右键选项点击"在文件资源管理器中打开文件夹"。此时打开的就是此项目在本地的文件目录。
如下图所示:
图 23. VS项目目录
我们可以发现这个项目的目录下并没有我们想象的:
- 头文件目录文件夹
- 源文件文件夹
- 资源文件文件夹
- …
这是因为:VS的一个项目当中的"外部依赖项"、“头文件”、"源文件"等并不是一个物理目录,只是一个逻辑上的分类。实际上它们直接物理存储在同一个目录下!
此目录下存储的诸如.vcxproj
作为后缀名的文件,实际上就是存储了这些同一个目录下的项目文件的关系。
所以就VS而言,解决方案,项目的关系可以用下图来描绘:
图 24. VS解决方案、项目组织图
试想一下,如果在VS项目的"头文件"下面创建一个"hello.h",如下图所示:
图 25. 创建一个新的头文件
这两个文件在实际的项目目录下,是如何存储的呢?
答案很简单,直接存储在同一目录下。
6. HelloWorld程序的注意事项(重点)
对于一个简单的HelloWorld程序,代码如下:
代码块 2. 简单的HelloWorld-C程序
1
#include <stdio.h>
2
int main() {
3
printf("hello world!\n");
4
return 0;
5
}
请大家注意以下细节:
- “#include"和”<stdio.h>"之间一定要有一个空格!!!
- 代码中"int mian(){}"被成为main函数。对一个C语言程序而言,main函数(也叫主函数)是具有唯一性的,因为它是程序的入口,所有C语言的程序都会从main函数开始执行。
那么对于VS而言,若一个项目中出现了多个main函数,程序该从哪里执行呢?显然VS是不可能自己搞清楚这个事情的。
所以VS不允许一个项目中出现两个main函数,如果希望写两个main函数,请创建多个项目!
7. 多项目的解决方案如何启动?
由于一个项目只能存在一个main函数,所以如果希望多个main函数共存,就需要创建存在多个项目的解决方案。
我们已经知道这个按钮的作用是:
图 26. VS-启动C程序
编译代码,生成可执行程序,然后运行这个可执行程序。
那么如果此解决方案有多个项目,又是什么情况呢?
很简单,由于每个项目中最多只有一个main入口函数,那么VS会编译每一个项目中的代码,为每一个项目生成一个可执行文件。也就是会生成多个可执行文件。
那么问题又来了,多个可执行文件最终执行哪一个呢?还是时候全部都执行?
观察下图中同一个解决方案下的,两个项目的项目名,它们有什么区别?
图 27. 多项目解决方案
很显然,第一个项目HelloWorld的名字是加粗的。这种加粗意味着项目HelloWorld是启动项目,点击启动按钮,会执行该项目生成的可执行文件。
VS也提供了修改启动项目的功能,右键单击某个项目会出现如下图所示的菜单:
图 28. VS设置启动项目
设定启动项目后,点击按钮就会运行对应项目中的main方法。
除了设置固定的启动项目外,VS还可以直接将启动项目设置为当前打开的项目,如下所示:
图 29. VS设置启动项目为当前项目
两种方式,大家自行选择一种即可。
四、其他补充
VS在实际使用过程中,可以进行一些设置,使得它更好用。这一部分内容都不重要,也没什么必须的设置,大家感兴趣看一下,觉得无所谓就不要看了。
1. 更好用的代码提示功能
使用VS写代码时,若想选择代码提示进行输入,需要按一下Tab键再回车,这未免麻烦了点,我们可以进行以下设置,使得可以直接回车选择代码提示:
- 打开 Visual Studio。
- 点击菜单栏中的**“工具 --> 选项”**。
- 在左侧的导航树中,定位到**“文本编辑器 --> C/C++ --> 高级”**。
- 在右侧的设置列表中,找到与 IntelliSense 相关的设置。
- 将"主动提交成员列表"从默认设置的False改成True。
图 30. 更好用的代码提示功能-设置界面
设置完成后,代码提示出现时就可以直接回车选择生成代码了,这样会更方便一些。
2. 查看或修改C语言版本
要查看或修改在Visual Studio中使用的C语言版本:
- 打开你的项目。
- 右键点击项目名,选择 属性。
- 在左侧导航窗格中,选择 配置属性–> 常规
- 查找与C语言标准相关的选项(C语言标准),并根据需要进行调整。
图 31. 项目属性当中的C语言标准
3. 修改启动快捷键
点击菜单栏中的**“工具 --> 选项”,打开设置选项卡。按照下图输入"调试.启动"**搜索找到该快捷键,然后即可进行修改。
图 32. 修改调试启动快捷键
默认的Debug调试启动快捷键是F5,我一般都会修改成F1。
同样的操作,搜索**“调试.开始执行不调试”**可以找到正常启动快捷键,然后也可以进行修改。
图 33. 修改正常启动快捷键
默认的正常不调试启动快捷键是Ctrl + F5,我一般都会修改成Ctrl + F1,但这个快捷键基本不会使用,改不改都不太所谓。
如果你想修改VS的其它快捷键,也可以仿照该案例去完成。
4. 选择启动项目的插件
在使用VS编写C代码的过程中,毫无疑问需要经常创建多项目解决方案,此时频繁手动切换启动项目是比较麻烦的。所以推荐一个可视化选择启动项目的插件:
SwitchStartupProject
大家可以在"扩展–管理扩展"的"联机市场"中搜索此插件安装,然后重启VS即可。
安装成功后,主界面菜单栏下就会多一个下拉框用于选择当前启动项目,这个插件还是比较方便的,推荐安装。
图 34. 选择启动项目-插件
注:此插件偶尔会有bug无法选择启动项目,此时重启解决方案即可解决。
5. VS的一些快捷键
VS常用快捷键:
Ctrl + L: 快速删除当前行
Ctrl + D: 快速复制当前行到下一行
Ctrl + 空格: 强制显示代码提示
Ctrl + Alt + L: 打开解决方案资源管理器。
Ctrl + K + D(按住Ctrl后再按K和D两个键位): 标准格式排版整个文件中的代码
Ctrl + Shift + /:快速注释以及释放注释。
6. 配置代码模板(建议做)
如果每次新建项目时,都选择"空项目"或者"控制台应用",那么接下来就需要自己动手新建一个".c"文件编写代码,这是比较麻烦的。所以建议大家配置一个代码模板,这样便于大家快速创建一个C程序骨架。
按照以下流程走:
1.创建一个标准的C项目
- 打开Visual Studio
- 新建一个C++"控制台应用"项目。
- 在解决方案资源管理器中,删除所有默认生成的
.cpp
文件。 - 添加一个新的
.c
文件,命名为main.c
。 - 在
main.c
文件中,输入你想要的默认内容。
这里推荐一个"main.c"文件的代码内容:
代码块 3. 代码模板-推荐内容
1
#define _CRT_SECURE_NO_WARNINGS
2
#include <stdio.h>
3
4
/**********************************************************************
5
* COMMENT *
6
**********************************************************************/
7
8
int main(void) {
9
printf("hello world!\n");
10
11
return 0;
12
}
其中:
- “#define _CRT_SECURE_NO_WARNINGS” 是微软的MSVC平台下特有的宏定义,用于禁用运行时编译警告。
- "#include <stdio.h>"包含头文件,这样就可以使用"printf"等函数。
导出项目为模板
- 在VS的文件菜单上选择“项目 --> 导出模板”。
- 选择“项目模板”,然后点击下一步。
- 输入模板的名称、描述等相关信息,然后点击完成。(注意模板的名称必须是英文的,不能用中文)
- 记住你输入的模板的名字,方便后续创建项目时使用。
使用新模板创建项目
- 当你下次新建一个项目时,你可以在模板中下拉找到你创建的项目模板。
- 选择你刚才保存的模板,输入你的项目名,并创建。
- 这个新项目会自动生成一个
main.c
文件,内容和你在模板中设置的完全相同。
你还可以将你的模板固定在项目创建的左页面,比如下图:
图 35. 固定项目模板到页面
这样下一次你就可以更快的找到你创建的模板了。
以上,就完成了VS项目模板的配置和使用。