VS2015提示gets未定义

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VS2015提示gets未定义相关的知识,希望对你有一定的参考价值。

参考技术A

故障原因:在VS2015中,stdio.h头文件中已经不存在gets()函数定义,而被更安全的get_s()函数和fgets()函数所替代。故直接用gets()会出现未定义的错误。

解决方法:将gets()修改成get_s()即可。

类似问题解决方法:VS2015编译器有自动补全功能,可以充分利用这个功能来查看C/C++库函数以及头文件定义的更新和优化。

扩展资料:

作用:gets从标准输入设备读字符串函数,其可以无限读取,不会判断上限,以回车结束读取;

缺点:因为本函数可以无限读取,易发生溢出。如果溢出,多出来的字符将被写入到堆栈中,这就覆盖了堆栈原先的内容,破坏一个或多个不相关变量的值。

优化历程:

1、由于可以无限读取,所以在2011年12月,ANSI采纳了ISO/IEC9899:2011标准,标准中删除了gets()函数,使用一个新的更安全的函数gets_s()替代;

2、宽字符版本,当使用unicode宽字符文本时,使用这个函数_getws();

3、在C11标准中被删除,可用C标准库中的fgets()代替。

参考资料来源:百度百科-gets

vs2008 点击"转到定义"为什么是"未定义符号"

1.有可能是VA未安装正确,但是我遇到的情况是我的VA安装正确的。

2.我的解决办法:删掉工程的.ncb文件后重新编译即可;以前也遇到过断点打不上去的事情,也是删掉.ncb后重新编译就可以了。

附带一下VS工程的几个文件的用途:

.clw文件记录了类的信息,如果classView中某个类不见了,重新生成该文件就可以了,方法:删除此文件,点击“建立类向导”,根据提示输入工程名称就可以了;
.ncb文件记录了类的提示信息,如果类的成员函数和变量的提示不见了,重新生成该文件即可,方法同上;
.aps文件记录了资源信息,要利用现成的资源,需要修改3个文件,.rc文件,Resource.h文件和.aps文件,.aps直接删除后,进入程序,VC会自动生成。

以上是关于VS2015提示gets未定义的主要内容,如果未能解决你的问题,请参考以下文章

2015.5.21 VS2010中引用Word组件后提示 类型“Microsoft.Office.Interop.Word.ApplicationClass”未定义构造函数 解决方法

vs中能编译通过,但是会有红色下划线提示未定义标示符问题

VS提示:未定义标识符“printf”。有头文件,能过编译,就是显示红波浪线,求助大神

C语言如何求一个二维数组有几行,还有为啥会提示gets()是一个未定义的标识符?

用VS2010编写C程序出现"未定义标识符"是怎么回事

VS 2015打开项目闪退,新建项目提示未将对象引用到实例