当前位置: 首页 > news >正文

vs2015使用教程

一、启动 visual studio 2015
稍等片刻,你就会看到这个界面:

这里写图片描述
点击菜单:”文件”-“新建”-“项目”,会出现这个窗口:
这里写图片描述
选择左侧的”Visual C++”下面的“win32”之后,选择右侧的”win32控制台应用程序”,项目名称随意填写,点击”确定”。
这里写图片描述
按照Win32应用向导完成设置,“下一步”即可
这里写图片描述
选择应用类型为“控制台应用程序”,附加选项为“空项目”,然后“完成”即可
这里写图片描述
此时在“解决方案资源管理器”中看到所创建的项目
这里写图片描述
之后,在”解决方案资源管理器”中,右键”源文件”,”添加”,”新建项”。(如果没有左侧的”解决方案资源管理器”,可以点击菜单:”窗口”-“重置窗口布局”)
这里写图片描述
这里写图片描述
二、开始书写代码
让我们向这个世界问好,写下这些代码:
这里写图片描述
点击工具栏上的那个三角形的绿色按钮(”本地Windows调试器”)来运行,或者更快捷的方式是直接按F5。
这里写图片描述
勾选”不再显示此对话框”,点击”是”。
一闪而过
当你点击运行按钮或按F5后,程序一闪而过,怎么回事,VS2015的BUG?
并不是,我们看看这段程序,这段程序只有一行printf,没有任何别的语句,计算机瞬间就能执行完,执行完不就结束了吗,这就是一闪而过的原因。
但是我要看输出的文字啊,怎么让它在printf后停住呢?
很简单只需要使用 system(“pause”); 命令即可,像这样:
这里写图片描述
你会发现 system 被画了红色的波浪线,将鼠标移上去发现VS告诉我们这是一个未定义的标识符,因为system所在的库我们没有包含,我们加上这行include:
这里写图片描述
按下F5,现在,你就已经学会如何使用Visual Studio来编写和运行简单的C/C++程序了:
这里写图片描述
三 补充
如果你不想为使用system(“pause”);包含一个库,也可以使用scanf函数来等待输入,从而暂停程序,或者你可以在最后一个花括号那行,设置一个断点,这种方法我们将会在之后详细讲解
scanf不能用?!
这里写图片描述
“VS的问题怎么这么多!连scanf都不能用还写C程序?”
等等,请你先冷静下来,打勾”不再显示此对话框”点击”否”,让我们仔细看看输出的这条错误信息:
error C4996: ‘scanf‘: This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
VS告诉我们,这个函数可能不安全,应该考虑使用scanf_s来代替(到底哪里不安全,有兴趣的朋友可以看本节尾部的选读小节)。或者定义_CRT_SECURE_NO_WARNINGS宏来屏蔽这个警告。
所以第一种方式我们可以修改scanf为scanf_s,便可以通过编译
这里写图片描述
”不行!我偏要用scanf!我偏要用!偏要用!!”对于这种强迫症患者,我们可以通过定义_CRT_SECURE_NO_WARNINGS宏来关闭VS的安全警告:
这里写图片描述
这两种方法任选其一即可,同时在关闭VS安全警告后,scanf_s仍然是可用的。
三、不安全的scanf(选读)
当使用scanf通过%s读入字符串的时候,很多初学者会忽略用户输入的字符串长度的问题,导致缓冲区溢出后程序不稳定。观察下面这个程序:
这里写图片描述

首先程序开辟了5个字符的空间来接受输入,但问题是,你并不知道用户会输入多少。让我们运行起来这个程序,输入一个明显大于5个字符的文本,测试一下:
这里写图片描述
“哈哈!什么事情都没有,你根本在吓唬我!”
别高兴的太早,按任意键结束这个程序:
这里写图片描述
VS给我们提出了警告,告诉我们”str”这个变量的堆栈不正常,其实这就是之前我们提到的术语”缓冲区溢出”,当我们将长数据放入短位置的时候,多出来的部分就会覆盖程序的其它数据,有时被覆盖的东西不重要,程序正常工作,有时重要,程序崩溃,这就叫不安全。
“但是我用VC++6.0的时候可没出这个错啊?”
我想是因为VC++6.0太老旧,没有检查这种问题的能力。
这种问题还有一个比较隐蔽的发生形式:如果我们正好输入5个字符呢?比如”Hello”。
事实上仍然会缓冲区溢出,因为字符串是以‘/0‘字符结尾,其本身也占一个位置,所以”Hello”实际上是6个字符!
四、代码书写方式

经常我们从别处粘贴来的代码缩进不正确,或者很多不拘小节的人写代码可能从来不注意缩进,虽然缩进不是C/C++语法的一部分,但是十分影响程序的可读性。
就比如一个判断三角形形状的程序,有的小朋友就能写成这样:
这里写图片描述
别笑,这正是我见过的。这确实对编译器并没有什么障碍,但是如果你要修改这样的代码,你得比平常多花起码三倍精力。就比如我问你,倒数第二个else搭配的是哪个if?你能一眼看出来吗。
现在我们使用VS的自动格式化代码的功能,选择要被格式化的代码,这来我们选择全部(Ctrl+A):
这里写图片描述
按住Ctrl,按一下K,按一下F,神奇吗?
这里写图片描述
那么现在我再问你,倒数第二个else搭配的是哪个if?

相关文章:

  • vs项目配置
  • VS项目属性的一些配置项的总结
  • 引入Irvine32库
  • vs2019安装教程
  • cef3 Binary Distributions下载及示例编译
  • VS2019直接编译cmake项目
  • C++调用构造函数的方式
  • chrome和Chromium有什么区别
  • C++ 函数指针及delegate的几种方法
  • C++中 模板Template的使用
  • c++函数后加冒号
  • CEF-概述和常用功能介绍(GeneralUsage翻译)
  • 引用计数
  • CEF之多进程调试
  • 理解WebKit和Chromium: Content API和CEF3
  • “大数据应用场景”之隔壁老王(连载四)
  • 【技术性】Search知识
  • 【跃迁之路】【444天】程序员高效学习方法论探索系列(实验阶段201-2018.04.25)...
  • Android单元测试 - 几个重要问题
  • create-react-app做的留言板
  • iOS 系统授权开发
  • js算法-归并排序(merge_sort)
  • React+TypeScript入门
  • Spark in action on Kubernetes - Playground搭建与架构浅析
  • Spring Cloud Feign的两种使用姿势
  • SpringCloud集成分布式事务LCN (一)
  • 浮动相关
  • 关于List、List?、ListObject的区别
  • 机器学习学习笔记一
  • 盘点那些不知名却常用的 Git 操作
  • 批量截取pdf文件
  • 它承受着该等级不该有的简单, leetcode 564 寻找最近的回文数
  • 阿里云服务器购买完整流程
  • ​html.parser --- 简单的 HTML 和 XHTML 解析器​
  • (C#)Windows Shell 外壳编程系列9 - QueryInfo 扩展提示
  • (C语言)球球大作战
  • (delphi11最新学习资料) Object Pascal 学习笔记---第8章第2节(共同的基类)
  • (编程语言界的丐帮 C#).NET MD5 HASH 哈希 加密 与JAVA 互通
  • (免费分享)基于springboot,vue疗养中心管理系统
  • ***原理与防范
  • .md即markdown文件的基本常用编写语法
  • .NET 指南:抽象化实现的基类
  • .NET/C# 使用反射调用含 ref 或 out 参数的方法
  • .NetCore项目nginx发布
  • .Net调用Java编写的WebServices返回值为Null的解决方法(SoapUI工具测试有返回值)
  • .net利用SQLBulkCopy进行数据库之间的大批量数据传递
  • .net专家(高海东的专栏)
  • ::
  • @converter 只能用mysql吗_python-MySQLConverter对象没有mysql-connector属性’...
  • @kafkalistener消费不到消息_消息队列对战之RabbitMq 大战 kafka
  • @取消转义
  • [《百万宝贝》观后]To be or not to be?
  • [AutoSar]BSW_Memory_Stack_004 创建一个简单NV block并调试
  • [C/C++]数据结构----顺序表的实现(增删查改)
  • [c++] 什么是平凡类型,标准布局类型,POD类型,聚合体