为啥我在VC++6.0 或者在vs2008上面安装了Visual Assist X并破解了,运行编程软件后界面显示是红色的GO
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为啥我在VC++6.0 或者在vs2008上面安装了Visual Assist X并破解了,运行编程软件后界面显示是红色的GO相关的知识,希望对你有一定的参考价值。
为什么我在VC++6.0 或者在vs2008上面安装了Visual Assist X并破解了,运行VC++6.0或者VS2008后界面显示是红色的GO,就像上图所示,但是按正常来说应该是绿色的而不是红色的
不同版本是不同颜色的,一般是红色的,没问题 参考技术A 可能是版本不同吧,你看看能用不,只要能显示上面有个visual assist X 的框并且能有效果不就可以了吗?为啥同样的C程序在VC++6.0可以运行,在VS2010就不可以?
#include<stdio.h>
void swap(int *p1,int *p2);
void main()
int a,b;
int *pointer_1,*pointer_2;
scanf("%d %d,&a,&b");
pointer_1=&a;
pointer_2=&b;
if(a<b)
swap(int pointer_1,int pointer_2); //实现的是交换操作
printf("\n%d>%d\n",a,b);
void swap(int *p1,int *p2)
int temp;
printf("I'm swaping...");
printf("please wait^_^");
temp=*p1;
*p1=*p2;
*p2=temp;
尝试了一下,虽然VC++ 6.0很老,也对上面这句报错,编译失败,应改为:
swap(pointer_1, pointer_2); //实现的是交换操作
函数定义和声明的时候才需要参数类型,调用的时候不需要,是因为声明与定义的时候已经告诉过编译器pointer_1, pointer_2的类型是int*。
至于scanf,在VS 2010中给出是警告,编译运行都是没有问题的。编译器给出警告的意思是告诉你这样做可以,但有出错的风险。具体到本例,就是说scanf不安全,比如:
char buf[5];
scanf("%s",buf);
如果用户执行时输入12345,程序就会将‘1’、‘2’、‘3’、‘4’、‘5’等5个字符和一个0存入buf,可是buf只能存储5个字符,这样buf就溢出了,多出来的字符将在内存中覆盖后续程序代码,使得程序执行时出现奇奇怪怪的行为,或者干脆出现段错误。
鉴于上述原因,微软从vc++2005开始引入scanf_s函数,这样在调用的时候,就需要加入buf长度:
scanf_s("%s", buf, sizeof(buf));
当输入12345时,scanf_s直接给一个0,说明输入超过缓冲区buf的长度,输入无效,如此就不会溢出了。
scanf_s函数现已被C11标准接纳,所以今后尽量用它,而scanf很可能在未来被标准去掉,变为不可用。
VC++ 6.0在1998年发布,那时还没纳入scanf_s函数,所以用它编译不会出现告警。追问
你这样说,我就明白了,谢谢!
参考技术A 遇到这种问题建议你再安个dev c++(或者别的基于gcc编译器的),并修改代码与gcc兼容。 参考技术B修改见下图标黄处
追问即使我改了,再新打过代码了,在VS2010里依然无法运行...提示如下:
f:\arvin\指针1\指针1\3.c(7): warning 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.
f:\vs2010\vc\include\stdio.h(304) : 参见“scanf”的声明
scanf改为scanf_s
追问谢谢你!!
参考技术C 可能因为版本的问题吧,版本不一样有可能不能实行通用。 参考技术D 调用swap的时候 不要加int以上是关于为啥我在VC++6.0 或者在vs2008上面安装了Visual Assist X并破解了,运行编程软件后界面显示是红色的GO的主要内容,如果未能解决你的问题,请参考以下文章
从 Visual Studio C++ 6.0 到 VS 2008?
为啥同样的C程序在VC++6.0可以运行,在VS2010就不可以?