Visual Studio使用小技巧 & 小贴士


Q:Visual Studio无法使用scanf是为什么(错误:C4996)

A:在新版本的C++版本中,微软已经禁止使用了scanf,转而使用了更加简洁的cin

int temp;
	scanf("%d",&temp);
	cin >> temp;
	

发现了没,cin函数可谓更加简洁,它省略了[数据类型]和”&”,只用了两个>>便搞定了,也不用指明数据类型。

实际上,C++ of Microsoft放弃scanf的主要原因是过时,以及不安全性。

scanf会溢出内存。正如百度百科所讲:

1.内存溢出问题是 C 语言或者 C++ 语言所固有的缺陷,它们既不检查数组边界,又不检查类型可靠性(type-safety)。众所周知,用 C/C++ 语言开发的程序由于目标代码非常接近机器内核,因而能够直接访问内存和寄存器,这种特性大大提升了 C/C++ 语言代码的性能。只要合理编码,C/C++应用程序在执行效率上必然优于其它高级语言。然而,C/C++ 语言导致内存溢出问题的可能性也要大许多。其他语言也存在内存溢出问题,但它往往不是程序员的失误,而是应用程序的运行时环境出错所致。

2. 当应用程序读取用户(也可能是恶意攻击者)数据,试图复制到应用程序开辟的内存缓冲区中,却无法保证缓冲区的空间足够时(换言之,假设代码申请了 N 字节大小的内存缓冲区,随后又向其中复制超过 N 字节的数据)。内存缓冲区就可能会溢出。想一想,如果你向 12 盎司的玻璃杯中倒入 16 盎司水,那么多出来的 4 盎司水怎么办?当然会满到玻璃杯外面了!

TIPS:使用cin函数时,请加上如下内容(在程序正文前):

/*如果是较新的版本请使用iostream*/
	#include <iostream>
	/*如果是VC6.0版本,请使用iostream.h,旧版本是有.h的*/
	#include <iostream.h>
	using namespace std;
	

Q:Visual Studio 2017中,为什么创建一个C++生成文件项目编译exe时会找不到exe

A:请先检查,当选择此选项时,Visual Studio 2017是否会弹出“生成文件项目调试配置设置”界面。如果有,即判断为您属于新版本的Visual Studio 2017。

要生成exe,首先请关闭“生成文件项目调试配置设置”界面,然后重新新建一个项目,找到“Visual C++”下的“Windows桌面”下的“Windows 控制台应用程序”,然后新建项目。

编辑你的项目。只需像以前那样编写即可。请注意不要改动任何东西,特别是

#include "stdafx.h"
	

这一头文件十分重要,如果没有,Visual Studio 2017将会报错


Q:C-Free的return函数可以在屏幕上显示“按任意键继续”(其在main函数下),Visual Studio 2017有这个功能吗?

A:Visual Studio 2017没有这个功能,不过您可以在return的前面加上

system("pause");
	

请注意,使用system函数前请加上

#include <stdlib.h>
	

当然您也可以使用以下函数,C++用户请使用

getch();
	

C语言用户请使用

getchar();
	

该函数已经包含在了C/C++的主头文件里。函数的作用是在接收到任意键以前一直等待

请注意,该函数在某些情况下会直接跳过。

%