VS编译器常见的问题
VS编译器常见的问题
- 前言
- 问题一——VS2013控制台一闪而过
- 解决方法1
- 解决方法2
- 问题二——scanf函数报错
- 解决方法
- 问题三——新建多个源文件引起的报错
- 解决方法1
- 解决方法2
前言
我们在开始学习C语言时,会遇到各种编译器,VS,Dev-C++,VC++6.0等等,当然编译器只是一个学习的工具,有好有坏我们就不在这里做过多的评判。这里我们将针对使用VS2013和VS2019的小伙伴经常遇到的问题做一个简单的解决方法。
问题一——VS2013控制台一闪而过
俗话说:万事开头难,有的小伙伴用VS2013写一个hello world,结果没有打印结果,心想:才写一个hello world,就遇到问题,这编程怎么这么难?其实并不是没有打印结果,而是控制台一闪而过,当然解决方案也是非常的简单。
解决方法1
第一步
找到解决方案资源管理器(如果没有,在上方菜单栏中找到视图,在视图中再找到解决方案资源管理器),在自己创建的项目中右击鼠标,找到属性,点击属性。
第二步
点击属性后会弹出属性页的窗口,按照顺序点击:配置属性——>连接器——>系统,然后再子系统中选择控制台,点击确定就可以完成。
解决方法2
在打印hello world的下方加上system(“pause”);因为使用到了system,所以要引入库<stdlib.h>。这个方法虽然能解决,但不是一劳永逸的方法,因此推荐使用解决方法1
PS:这个问题只会出现在VS2013上,VS2019不会出现这个问题,因为VS2019子系统默认是控制台。
问题二——scanf函数报错
这个问题也是小白初装VS编译器遇到的问题(VS2013和VS2019都会遇到),每次遇到输入scanf时,总会遇到这样一个错误。
例如:
#include <stdio.h>
int main()
{int a = 0;scanf("%d", &a);printf("%d\n", a);return 0;
}
这不免又会给小白一个痛击,那么该如何解决呢?我们可以看到这个错误是说scanf不安全,要我们使用scanf_s()函数,因此我们只需要将scanf改为scanf_s就可以了,但是又有另一个问题:scanf_s是VS自己的输入函数,因此不具备可移植性,也就是说,我们如果将代码放入其他的编译器,同样无法识别scanf_s函数,因此我们需要找其他的解决办法。
解决方法
我们可以看到上面的错误提示提到了这样一句话:use _CRT_SECURE_NO_WARNINGS。如果我们要让scanf不报错只需要将这样的一句话放在开头并用#define修饰就可以了(后面的1可加可不加)。像这样:
这样就没有错误的产生,但是如果每次都需要加上这么一句话,那么也太麻烦了。那么我们如何做呢?
第一步:
找到自己的VS的安装目录。
第二步:
进入目录:Visual Studio IDE——>Common7——>IDE——>VC——>VCProjectItems,这时候能看到一个newc++file的文件。
第三步:
记事本打开,输入这样的一句话#define _CRT_SECURE_NO_WARNINGS 1,然后保存(保存还是保存到原本的位置)。这样就可以在新建文件后,就直接加上了#define _CRT_SECURE_NO_WARNINGS 1。
问题三——新建多个源文件引起的报错
在学习编程初期,有的小伙伴不太喜欢把原本的代码注释掉,而是喜欢新建项重新使用main()函数,这样就可以看到多个源文件,从而使得自己的代码变得有条理,有这种习惯固然是件好习惯,但是同样会带来一个问题。例如:
我们创建了两个源文件:test.c和test1.c。
test.c:
test1.c
当我们编译其中之一时,就会报出这样一个错误:
很多小白在这里就懵逼了,这又是些啥?其实是因为你有俩个main()函数,我们知道一个项目里面有且只能有一个main()函数,然而test.c有一个main()函数,test1.c又有一个main()函数,编译器不知道程序的入口是哪个,那么就会导致报错。知道了原因,那么解决方法就很简单了。
解决方法1
如果你要编译test1.c文件,那么我们可以把test.c文件屏蔽掉。
第一步:
找到test.c,右击鼠标,找到属性。
第二步:
找到配置属性中的常规,在从生成中排除下拉框中选择 “是”,点击确定。这样编译器就排除了test.c的编译过程。
解决方法2
直接注释main()函数就可以了,如果是平时的代码练习,我们完全不需要新建一个.c文件重写main()函数,只需要写完一个小的练习,就把所写的main()函数注释掉,重新写main()函数就可以了。如果偏要新建一个.c文件重写main()函数,那么需要把其他不需要用到的main()函数注释掉才可以,这样才不发生报错。
好了,这是几个比较常见的VS编译器出现的问题,如果对你有所帮助,别忘了点赞,有任何问题或者建议,欢迎私信和评论,谢谢大家!
VS编译器常见的问题相关推荐
- c++编译器常见warning与解决方案总结
编译器编译c++代码,有时候难免会有一些报警信息,不要小看这些warning,很多warning都值得注意,warning在某些情况下会引发error.能解决的warning,最好就把它搞定吧.当然大 ...
- C语言的编译器常见的有哪些?
1. visual c++6.0 (常见的就是学校机房安装) : 2. visual studio (很好用,很多人选择安装) : 3. TCC非常方便:大小只有几M,但是编译时麻烦: 4. Code ...
- 安编译器错误_Fortran编译器常见错误提示及原因
d. 如果图上的 include . lib . path 几个变量没有,请点击新建:如有,点击编辑:按下面变 量值进行修改: 变量: path 值: c:\MSDEV\bin; %path% 变量: ...
- c语言编译器error,KEIL C编译器常见警告与错误信息的解决办法
对于函数的自变量.局部变量和全局变量声明如果没有指定内存类型,则内存模式将成为内定的内存类型.如果 指定了内存类型的变量,则不理会内存模式,完全有所指定的内存类型为主. SMALL模式:小模式 所有的 ...
- 2.Java异常学习
1.Java异常的概念 异常的例子 1.除法就是一个需要捕获异常的例子,除数又可能是0 异常处理的基本流程如下 一旦发生异常,就使得程序不按照原来的流程继续的运行下去 a.程序抛出异常 try{ th ...
- 【转】飞扬青云_Qt开发经验
转自:Qt开发经验: 自己总结的这十多年来做Qt开发以来的经验,以及Qt相关武林秘籍电子书,会一直持续更新增加,欢迎各位留言增加内容或者提出建议,谢谢! 一.开发经验 01:001-010 当编译中发 ...
- Java内存模型常见问题
1.什么是内存模型? 在多核系统中,处理器一般有一层或者多层的缓存,这些的缓存通过加速数据访问(因为数据距离处理器更近)和降低共享内存在总线上的通讯(因为本地缓存能够满足许多内存操作)来提高CPU性能 ...
- 总结-最全linux工具的使用
常用工具: 1. 软件包管理工具 2.编辑器 3.编译器 4.调试器 5.项目自动化构建工具 6.项目版本管理工具 软件包管理工具:安装其他的软件工具. yum-类似于手机的应用商店. 提供软件包的查 ...
- Linux篇【3】:Linux环境基础开发工具使用(中)
目录 一.Linux 编译器:gcc/g++ 的使用 1.1.知识拓展: 1.2.如何安装 C/C++ 标准静态库: 1.3.头文件与库文件: 1.4.静态库,静态链接,动态库,动态链接: 二.简单 ...
- Qt开发经验小技巧合集
一.开发经验 当编译发现大量错误的时候,从第一个看起,一个一个的解决,不要急着去看下一个错误,往往后面的错误都是由于前面的错误引起的,第一个解决后很可能都解决了. 定时器是个好东西,学会好使用它,有时 ...
最新文章
- ARKit 与 ARCore比对(三)
- 人类是怎么从猩猩身上惹来艾滋病的?人与兽的关系很单纯!
- Linux命令篇之usermod命令和passwd命令
- 关于DateTime对象序列化为Json之后的若干问题
- html5 手机上传图片
- 【OpenGL】六、Visual Studio 2019 配置 GitHub ( 提取和拉取简介 | 拉取远程代码 )
- 985高校6年招聘8000多青年人才引热议!高校割起年轻博士的韭菜有多疯狂?
- ansible编译安装--操作系统环境Redhat6.4
- spark上运行xgboost-scala接口
- Android中下载、安装和卸载(原)
- 在网站中使用Session的简单例子
- IOS--CALayer实现,界限、透明度、位置、旋转、缩放组合动画(转)
- 单播/组播/广播 通讯协议的特点及应用对比
- 打开 Freetextbox 的 InsertImageFromGallery 及如何接收 ftb.imagegallery.aspx 返回的图片信息...
- Android源码在线查看工具
- 怎样更改计算机ip,怎么快速修改电脑ip地址
- java简历vue专业技能_用vue 写一个好看的个人简历
- tpm_crb MSFT0101:00: [Firmware Bug]: ACPI region does not cover the entire command/re处理
- 2022年山东省安全员C证考试资料及山东省安全员C证考试试题
- oracle 一维数转二维数组,js将一维数组转化为二维数组
热门文章
- 勇者游戏C语言,c语言命令行-勇者斗恶龙
- 御剑江湖一键端mysql_御剑情缘gm完整端下载
- android 文件md5校验失败怎么办,更新包md5校验失败的4个原因和解决方法!游戏lol更新md5验证失败...
- 【plantuml】程序员绘图工具
- python入门教程(非常详细),从零基础入门到精通,看完这一篇就够了
- 数据分析师初级—中级—高级,每个阶段都需要学习什么?
- 【C语言视频教程完整版】从入门到进阶,适合C语言初学者计算机考研党考计算机二级大一大二学生学习观看~~~
- 计算机毕业设计Python+djang的药物管理系统
- 利用360卫士打补丁
- 元气骑士没有手柄怎么解锁机器人_元气骑士机器人怎么解锁?机器人获取方式和技能介绍...