VS2019的常见错误和调试功能

2023-11-11

目录

一、VS2019常见问题

1、scanf问题

2、如何在当前页面下再创建新项目和创建多项目后无法运行当前项目的问题

二、VS2019的调试功能(不打断点)

三、VS2019的调试功能(打断点)

   ​    

四、总结


一、VS2019常见问题

1、scanf问题

 

 

        很多小伙伴在使用VS2019的时候写了一个带有scanf语句的很简单的代码,然而编译器却给你报错了,无法正常运行,这里教大家三种关于VS2019的scanf问题的解决办法:

1、将scanf改为scanf_s,这个是一系列VS编译器的问题,不是正规的C语言写法,这个只是Microsoft公司为了提高输入安全性而在VS新增的一个函数,那么这个函数和scanf函数有什么不一样呢?这里举个例子我们使用scanf语句的格式是scanf("%s",&a);这里会把从键盘上输入的字符都赋给a这个变量的地址,但是如果我们要限制用户输入的字符串长度,这样的输入方式显然不安全,scanf_s语句的正规使用格式是scanf_s("%d",&a,10);这样表示我们限制了用户输入字符串的长度,最多为9个字符最后一个字符是字符串结束符'\0'(编译器会自动添上),意思是当用户输入的字符串大于9个字符的时候,超过了我们规定的输入字符串的长度,这个时候这条语句的返回值就会变成0,相当于return 0;也就是说程序运行到这里就结束了,不会在执行下面的语句

2、在编译器上方的菜单中点击项目,点击方框最下方项目属性,在C/C++这一栏找到常规,在右方找到sdl检查,将“是”改为“否”

 

3、我们找到程序报错的语句

点击下方的输出 ,将下图中选中的语句复制下来

然后在程序的最上方加上这个宏定义,如下图 

如果下方还是报错(可能是由于网速问题),可以点击重新生成 ,如下图

2、如何在当前页面下再创建新项目和创建多项目后无法运行当前项目的问题

       有的小伙伴不知道怎么在当前项目下创建新项目,还傻乎乎的重新进编译器,再按照上期的教程重新新建一个大项目,这样做不是不行,只是太浪费时间而且不方便查找,一个大项目内可以创建多个与之相关的项目,比如说我创建一个大项目名字是数据结构,那么在这个大项目内我可以创建链表,队列,栈,树,图等等的数据结构的小项目用于测试或者是开发,这就跟我们整理衣柜一样,什么东西该放哪里就放哪里,不能到处乱放,要做一个爱干净的小宝宝。下面 我将教大家怎么在大项目中新建小项目以及如何运行该项目

1、我们双击项目上方的解决方案,依次选择添加->新建项目,如图

2、然后就回到了我们熟悉的界面,具体操作上期已经讲过了,这里就不在赘述

 

 3、直接跳转到给新项目添加代码环节

注意:这里会有很多小伙伴觉得兴奋,因为他们知道了怎么创建小项目(一个大项目中的小项目是互不干扰的),一按ctrl+F5马上就懵逼了,因为这里运行的程序还是上面那个程序,解决方法如下:

4、双击新项目,在弹出的菜单中找到设置为启动项

 

然后编译器就会运行新项目啦(编译器当前运行的项目的项目名称字体要略粗一点) 

二、VS2019的调试功能(不打断点)

        作为一名合格的程序员,不会调试那是要笑死人的,我在下面的内容中将会教大家怎么进行调试(注:本人喜欢用快捷键,记不住的小伙伴可以查找上方的菜单)

 

1、在使用快捷键开始调试之前一定要把功能键f1到f12的功能关闭(可以按下fn键或者直接在开始菜单里面设置)

2、(这里用我以前写的书序表做演示,看不懂也没关系,知道流程就可以了)按下f10开始编译

我们在134行这里看到了一个小箭头,这表示我们的程序从这里开始执行

2、我们可以继续按下f10或者按下f11,f10是按过程执行,f11是逐语句执行,按过程简单理解就是它会按照你主函数里面的语句逐过程执行,不会跳转到某一语句中出现的函数里面去,如果你觉得前面的代码肯定没问题了就可以按f10节约时间,到了可能出现问题的地方再按f11逐语句执行

比如这条主函数里面的语句是创建顺序表,这里我按的f11就会跳转到创建顺序表这个函数里面去,按f10就不会这样

3、在调试过程中可以盯着控制台窗口(注意一定要让光标有焦点,不然按下没反应)和下方的自动窗口,看写入的值和地址还有打印的值或效果是否有问题

 

发现问题所在之后就可以按下shift+F5停止调试并修改我们的代码啦

三、VS2019的调试功能(打断点)

        当我们想要节约时间或者验证一个过程内是否出现问题的时候,我们可以采用打断点的方式进行调试,我这里做一个简单演示

1、打一个或者多个断点

2、按下f5开始调试(按下f5会从程序遇到第一个断点的地方开始执行,而按下f10会从主函数的第一条语句开始执行)

如上图,按下f5从第一个断点处开始运行

2、接下来采用逐语句执行,按下f11,同时盯住控制台和内存地址的值(最下方的自动输出窗口)的变化 

       

发现错误后按shift+F5停止调试,然后修改代码就可以啦

 由于这是我以前写的代码,没有错误(嘿嘿)无法给你们演示调试时出现错误的情况,反正这个东西多用几次就会了,主要还是要自己动手。

四、总结

        作为目前C语言和C++的最高级编译器,VS2019的功能十分强大,可以完成很多其他编译器无法完成的工作,开始使用这款编译器是你自己的一大跨越,它之中的功能可能绝大部分我们不知道怎么使用,但是作为一名合格的C/C++程序员,像上面的基本错误和调试功能我们必须得知道。求点赞,求评论,求关注

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

VS2019的常见错误和调试功能 的相关文章

随机推荐

  • java高并发系列之JMM相关的一些概念

    JMM java内存模型 由于并发程序要比串行程序复杂很多 其中一个重要原因是并发程序中数据访问一致性和安全性将会受到严重挑战 如何保证一个线程可以看到正确的数据呢 这个问题看起来很白痴 对于串行程序来说 根本就是小菜一碟 如果你读取一个变
  • 实习生面试软件测试岗位指南

    实习生面试软件测试岗位指南 最近一直在面试测试实习生的岗位 发现实习生的基础知识参差不齐 有的基本做什么就来面试 这样子会浪费实习机会 有的好机会都错过了 下面给实习同学一些建议 1 公司招实习生的目的 1 软件测试好入门 实习生做项目好上
  • 学习爬虫总结(一)

    作为一名大三狗 以前的两年似乎也没有坚持学习什么 现在我决定我要每天坚持学一点东西 来提升自己 爬虫这个名词第一次出现在我的印象中是学习中国大学MOOC里面的python语言程序设计慕课 那时候我对爬虫并不了解 也没有学习的兴趣 最近在看一
  • Springboot项目Aop、拦截器、过滤器横向对比

    前言 伟人曾经说过 没有调查就没有发言权 好像是伟人说的 不管谁说的 这句话是正确的 有些东西看着简单 张口就来 但很有可能是错的 我个人的经验是 aop 过滤器 拦截器的实现方式很简单 一学就会 不用就忘 忘了再学 学了再忘 如此循环内耗
  • springboot整合请求分析

    文章目录 请求 初识restTemplate GET请求 1 传参替换使用 来表示坑位 根据实际的传参顺序来填充 如下 2 使用 xx 来传递参数时 这个xx对应的就是map中的key 3 当响应头是application json cha
  • 计算机单位及单位转换

    计算机单位及转换 一 位 计算机中表示信息的最小单位 表示一位二进制信息 以b表示 bit 0 1 一个字节8位 字节 计算机中处理信息的最小单位 以八位二进制信息 以B表示 1B 8b 一个整数4个字节 字长 一个字所包含二进制输的位数
  • 刷脸支付逐渐普及刷脸项目也逐渐火热起来

    科技的发展总是朝着更智能化的方向前进 在此基础上 人脸识别技术因其生物支付特征明显 和特征唯一性获得了众多项目的青睐 将这一技术迅速线下落地产业化 随着人脸识别技术的逐渐成熟 刷脸支付应运而生 刷脸支付代理项目也逐渐火热起来 我们体验了刷脸
  • 认识 MySQL

    文章目录 1 前言 2 数据库 3 MySQL 1 前言 在当今信息时代 数据被认为是最宝贵的资源之一 因为它可以帮助我们洞察趋势 做出决策 构建智能系统 并推动创新 而数据库技术的崛起 尤其是MySQL数据库 为我们提供了强大的工具来存储
  • vue中实现删除校验-iview的气泡提示

    前言 很多时候我们担心删除会出现误删的情况 这样就需要对删除进行二次校验 确定是否继续删除 效果图 实现代码
  • Type Incompatible operand types String and int

    今天eclipse包了一个错误 意思就是Description Resource Path Location Type Incompatible operand types String an 但是昨天还没有错误为什么那 最后找了好久发现不
  • 区块链之PBFT算法

    在公有链中用的最多的是pow算法和pos算法 这些算法都是参与者的利益直接相关 通过利益来制约节点诚实的工作 解决分布式系统中的拜占庭问题 拜占庭容错算法是一种状态机副本复制算法 通过节点间的多轮消息传递 网络内的所有诚实节点就可以达成一致
  • jQuery实现省市二级联动

    主要实现流程 步骤分析 1 设置加载页面函数事件 2 在里面获取select的id并且设置下拉事件并且绑定函数 3 定义2维数组存放相应的城市 4 遍历2维数组省份 并且使用if判断 点击时的this value值 如果值与省份 二位数组下
  • 深入理解 == 与 equals 区别

    深入理解 与 equals 区别 这是一个老生常谈的问题了 也是在面试过程中常见的问题之一 网上所提供的常用回答是 equals比较值 比较值和引用 对java源码有了一定了解了之后回头再思考这个问题并不是那么的简单单一 java中的二元运
  • springboot的配置注入

    文章目录 第一种 使用 Value 第二种 使用 ConfigurationProperties springboot配置注入 数据绑定 有两种方式 第一种 使用 Value 首先 在application yml中定义自己的数据 appl
  • 蓝桥杯基础试题汇总(Python)看这一篇就够了

    目录 蓝桥杯习题汇总 1 试题 基础练习 A B问题 2 数列问题 3 试题 基础练习 十六进制转八进制 4 试题 基础练习 十六进制转十进制 5 试题 基础练习 十进制转十六进制 6 试题 基础练习 序列求和 7 试题 基础练习 圆的面积
  • 浅谈数据同步实现rsync+inotify

    浅谈数据同步实现rsync inotify 数据的实时同步介绍 数据的实时同步实现 inotify inotify的介绍 实现inotify软件 inotify rsync使用方式 实现inotify rsync 1 rsync基本概述 2
  • ubuntu安装deb包

    ubuntu安装deb包 安装deb包 sudo dpkg i 包名 安装deb包后 可能会出现依赖关系而不能正常安装软件 这个时候先更新下源然后解决依赖关系后重装即可 sudo apt get update 更新 sudo apt get
  • 教程网站 汇总:Linux 、 C /C++ 、HTML、CSS

    C 语言教程 菜鸟教程 https www runoob com cprogramming c tutorial html C 教程 菜鸟教程 https www runoob com cplusplus cpp tutorial html
  • 安装apache后无法访问localhost但可以访问127.0.0.1的解决方法

    localhost与127 0 0 1的概念和工作原理之不同 概念 localhost 也叫local 正确的解释是 本地服务器 127 0 0 1 在windows等系统的正确解释是 本机地址 本机服务器 工作原理 localhot 是不
  • VS2019的常见错误和调试功能

    目录 一 VS2019常见问题 1 scanf问题 2 如何在当前页面下再创建新项目和创建多项目后无法运行当前项目的问题 二 VS2019的调试功能 不打断点 三 VS2019的调试功能 打断点 四 总结 一 VS2019常见问题 1 sc