Skip to content

VS2022安装使用教程

安装VS2022

随便打开一个浏览器百度直接搜索visual studio,点击进入官网,或者直接 点击此处 进入。初学者或者普通用户直接选择社区版下载就可以了。

下载完成打开以后进入编程环境安装界面,学习和使用C/C++的选择使用C++的桌面开发通用windows平台开发这两个就可以了,选择好以后直接点下部的安装。

点击安装以后程序会下载相关的文件并进行安装,可以直接挂到后台就不用管了。

等待安装完成后打开软件即可。

使用VS进行开发

创建项目

第一次打开VS,界面如下图所示

第一次打开VS的效果图

VS主界面

Tips

初次进入还有一个新特性提醒界面,已经被我关闭了。

点击VS左上角菜单栏的

使用VS创建项目

创建控制台应用

随后就进入了创建新项目的配置页面

配置新项目页面

到这一步就是整个创建项目的流程,但最后一步我们需要详细谈一谈。

配置项目

上图的配置页面中可以看到,我们主要可以调整三个选择:

  1. 项目名称。
  2. 位置。
  3. 解决方案名称。

我们先重点来讲一下VS当中,理解它们之间的关系是使用VS的一个重点。

项目 VS 解决方案(重要)

用于协调多个项目之间的关系和依赖性,尤其是在大型应用程序开发中。解决方案不仅仅是项目的简单列表,它还包括项目之间的依赖关系、编译顺序以及其他元数据。

解决方案的文件夹下通常会自动生成一个扩展名为**.sln**的文件,来保存这些项目之间关系的信息。

项目中会包含:源代码文件、资源文件(如图片或数据文件)、配置信息文件等。

通俗的说:

VS中的一个项目是进行开发的基本单元,一个解决方案至少有一个项目,也可以包含多个项目,这些项目可能相互依赖。解决方案会管理这些多个项目的关系。

如果你熟悉Java开发,那么可以使用IDEA和VS做一个类比:

  1. IDEA的module(模块)是开发的基本单元,project(工程)是模块的容器,一个工程最少有一个模块,但也可以有多个模块。
  2. VS的项目是开发的基本单元,解决方案是项目的容器,一个解决方案至少有一个项目,但也可以有多个项目。

命名

搞清楚它们之间的关系后,就要稍微浅谈一下命名了:解决方案和项目应该如何命名呢?

首先,我们要说一个大的原则,以后大家无论进行什么语言的程序开发,在遇到命名时,都一定会存在一个大前提:

也就是说,这个命名应当明确表达功能和作用,这是最重要的原则。

其次,一般来说,名字都应该,不应出现中文或者中文拼音。

最后,解决方案和项目命名的普遍约定是:

  1. 每个单词的首字母都大写,包括第一个单词,各个单词之间直接连接不用加下划线等符号。例如:FirstName、MyProgram等。

最后,关于命名并没有强制的一定的约束,具体还是要看各公司各研发单位的习惯而定。上面给出的只是大家普遍遵守的一些约定。

注意事项

在学习或者练习的时间我们会把解决方案、项目的命名前带上序号,比如:

  • "00_HelloWorld":第一个项目,这个项目叫HelloWorld。
  • "50C_Day01":第50期,C语言部分内容的第一天。

完成项目创建

上面的所有内容都了解后,就可以完成一个项目的创建了,大家参考我的命名和配置:

VS项目创建配置图

具体的解释都已经在图中贴出了,设置完成后,点击创建即可完成项目创建。

创建源文件

点击创建项目后,首先你会直接进入以下页面:

VS项目主界面-HelloWorld

VS会默认创建一个"HelloWorld.cpp"文件,这是一个C++源代码文件,但我们学习的是C语言,所以我们可以直接删除这个文件。

然后

VS新建项

此时可能会弹出以下两种窗口:

新建项选择-情况1

新建项选择-情况2

其中"xxx"代表此源文件的名字,关于源文件的命名,建议大家采取以下策略:

  1. C语言源文件通常以".c"结尾。
  2. 见名知意,使用合法的英文单词。
  3. 单词字母全部小写,如果文件名由多个单词组成,通常使用来分隔这些单词。
  4. 不要出现下划线以外的特殊字符。

举几个例子:

  1. a.c
  2. main.c
  3. hello.c
  4. hello_world.c
  5. ...
.c和.cpp的区别

在VS当中,用.cpp写代码会使用C++编译器来编译代码,遵循C++语言标准。

而使用.c写代码会使用C编译器来编译代码,遵循C语言标准。

大家都知道C++就是以C语言为基础扩展而来的编程语言,C++是兼容C语言的。

但我们要注意的是:

  1. C++并不是完全兼容C语言的,C语言中存在极少的某些语法并不被C++支持(虽然这些语法不常用)。
  2. C++相比C语言增加了很多新特性,这就导致C++的编译器会执行更严格的编译检查。所以如果用C++编译器编译C语言代码,需要让你的C语言代码反过来符合C++规范。这有时会限制你编写C语言程序。

总之,即便大多数情况下用.cpp写C语言代码是没问题的,但为了避免踩坑出问题,也为了谨记C不是C++,还是请大家用.c来编写C语言代码,安全省心。

编写代码

创建完毕.c文件后,双击打开此文件,然后编写代码。

在本小节中,我们只管写代码运行,下节我们再讲这些代码的含义。

cpp
#include <stdio.h>
int main() {
    printf("hello world!\n");
    return 0;
}

代码编写完成后,你可以使用以下两个按钮来启动程序(在VS主界面的上方菜单栏):

VS-启动程序的两个按钮

这两个按钮的差别是:

  1. 点击按钮1启动程序,此时程序会以Debug模式启动。
  2. 点击按钮2启动程序,此时程序会以正常模式启动。

关于Debug模式和正常启动程序的区别,后续课程会详细讲解。

点击启动程序后,若正常运行不出意外,你会看到控制台如下图所示:

VS-HelloWorld运行结果

当然,如果出问题大概率就是代码中的单词拼错了,某一句代码漏了分号等问题。请检查一下VS的错误输出列表,修改代码即可!

注意事项

  1. 这么做的目的主要是为了上课方便以及规避一些可能存在的坑。

    即:

    选择32位平台编译器来编译代码

  2. 无论点击哪个按钮,以什么模式启动程序,都需要经历的过程。(这个过程后续会详细讲解,现在你只需要知道代码被编译执行就可以了。)

使用VS调式程序

写代码总不是一帆风顺的,总会碰到一些问题,检查问题,排除错误,对于任何程序员而言都是基本功。

我们前面讲过,C语言是一门很容易出错,且自身不提供异常处理机制的语言,这导致程序员难以发现解决问题。

但好在利用集成开发环境Visual Studio写C语言代码时,VS给我们提供了一系列的手段来排查解决问题,这就是VS的Debug模式。

如果一个程序没有编译和链接上的问题,那么它最终就能够生成可执行文件。当操作系统加载这个可执行文件到内存并运行时,程序开始执行。

但程序的执行经常会超出或不符合程序员的预期,这就是程序的运行时问题,也就是程序员常说的Bug。

为了解决这些Bug,程序员需要进行程序调试。Debug程序的过程,大体有以下几个步骤:

  1. 大体判断问题的来源、从而模糊的定位问题
  2. 定位具体的错误位置
  3. 修改代码
  4. 验证问题是否得到解决。

这些过程若全靠程序员凭借肉眼、经验去完成,很多时候是比较困难的。但好在现代集成开发环境(IDE)提供了强大的调试工具,如断点、变量观察、单步执行等,帮助程序员更有效地进行Debug。

VS同样也具有这样强大的功能,下面我们一起来学习一下VS的Debug模式。

首先,给出一段用于Debug演示的代码:

cpp
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

void print_rectangle(int line, int column) {
    for (int i = 0; i < line; i++) {
        for (int j = 0; j < column; j++) {
            printf("#");
        }
    }
}

int main(void) {
    printf("hello world!\n");

    int a = 10;
    int b = 20;
    int sum = a + b;

    printf("请键盘输入一个int整数: ");
    int c;
    scanf("%d", &c);
    if (c > 0){
        printf("您输入的数大于0!\n");
    }else if (c < 0) {
        printf("您输入的数小于0!\n");
    }else{
        printf("您输入的数就是0!\n");
    }

    printf("接下来开始打印一个矩形,请输入要打印矩形的行数和列数: \n");
    int line;
    int column;
    scanf("%d", &line);
    scanf("%d", &column);
    print_rectangle(line,column);

    return 0;
}

当然,这一段代码并非完全没有问题,实际上存在一个"bug",我们可以通过Debug模式轻松找到这个问题并修正。

打断点

若想启动Debug模式,首先要做的就是打断点。 如何打断点呢?参考下图:

Debug模式-打断点

注意

  1. 如果没有打断点,Debug模式和普通模式启动程序是没有差别的。
  2. 断点意味着代码以Debug模式启动时,。比如上图中一个位于main函数,第13行的断点,就表示程序启动后将于13行暂停,并即将执行第13行的代码。

Debug模式启动程序

以Debug模式启动程序,在以前章节已经讲过了,也就是下图:

Debug模式-启动程序

点击下图中的,即表示使用Debug模式启动程序。而后面的,则是正常模式启动程序。

界面窗口布局

为了更好的使用Debug模式,推荐大家按照以下窗口布局:

Debug模式-窗口布局

所有需要的窗口,都可以在**"主界面调试" --> "窗口"**下面找到。

如果搞乱了布局,都可以点击**"主界面窗口" --> "重置窗口布局"**,重置布局。

若希望打开"解决方案资源管理器",可以使用快捷键"Ctrl + Alt + L"。

具体应该如何调整窗口布局?

参考下图:

Debug模式-调整布局的方式

自己尝试一下,不要害怕弄乱布局,弄乱了重置布局即可。

功能按钮介绍

上面的都是前期准备,Debug模式调试程序的核心是围绕着一系列功能按钮展开的,如下图所示:

Debug模式-功能按钮介绍

逐一介绍:

  1. 按钮1,"继续"按钮。表示立刻跳过当前的断点,转而在下一个断点暂停。若下面没有断点,则执行完毕整个程序,不再暂停。
  2. 按钮2,"显示下一条语句"按钮。顾名思义,显示下一条即将执行的语句。(注意是即将执行,还没执行)
  3. 按钮3,。执行下一条语句,如果碰到函数调用,则进入函数当中。
  4. 按钮4,。执行下一条语句,但会将函数调用作为一条普通语句,直接执行完毕。
  5. 按钮5,"跳出(快捷键为shift + F11)"按钮。直接执行完毕当前函数,回到该函数的调用位置。如果在main函数当中点击此按钮,则会直接将程序整个执行完毕。
  6. 按钮6,"停止调试"按钮。
  7. 按钮7,"重新开始"按钮。

以上,请大家自行尝试使用,熟悉每一个按钮的功能。你找到演示程序中的"Bug"了吗?

注:Debug过程,不仅要查看VS当中的窗口,还需要要配合查看控制台输出以确定程序的运行状态。

监视窗口

下面开始介绍上面提到的几个Debug窗口,首先介绍监视窗口。

监视窗口的作用很简单,它允许你在调试过程中实时查看程序中变量的取值,还可以对它们做各种运算操作。这样,程序员就可以观察程序的运行状态,查找错误,修改bug等。

具体而言,在监视窗口中主要可以做到以下几个功能:

  1. 可以查看和监控程序中所有变量或者表达式的当前值。
  2. 修改变量的值:你可以直接在监视窗口中修改变量的值,来观察程序的行为。
  3. 计算表达式:可以输入和计算表达式,观察表达式的值如何随着程序的执行而改变。
  4. 查看变量的内存地址:输入"&变量名",即可查看变量的内存地址(值)。

这些操作大家可以自行探索,可以参考下图:

监视窗口-使用示例

内存窗口

使用监视窗口得到变量的地址值后,可以将该地址值拖进到内存窗口的地址框,从而查看该变量在虚拟内存空间的内存布局。

如下图所示:

内存窗口-使用示例

该窗口是很重要的,调试C程序是比较经常需要查看内存窗口的。

反汇编调试

cpp
#include <stdio.h>

int main() {
    //定义整型变量a, b, c
    int a;
    int b;
    int c;

    a = 3;
    b = 4;
    c = a + b;

    printf("%d\n", c); //把c的值输出

    return 0; //成功完成
}
  1. 设置断点F9

  2. 选择反汇编按钮

  3. 根据汇编代码分析程序